使用 Linux 自带的 logrotate 程序来控制日志文件尺寸
1. 编写配置文件,内容如下(以 Amadeus 系统为例):
编写配置文件,放在 /etc/logrotate.d/xxxx 下,其中 xxxx 是自己取的名字,无需后缀。例如 Amadeus 系统中此文件是 /etc/logrotate.d/amadeus
/usr/local/tomcat_amadeus/logs/catalina.out {
copytruncate
daily
dateext
rotate 15
compress
missingok
size 2000M
}
第一行是文件的全路径,大括号中的重要字段解释如下:
copytruncate 使用先拷贝文件再 truncate 原文件的方法来轮转,这种方法无需停应用,也不会有数据丢失。
daily 按天执行
dateext 轮转后的日志备份加上日期后缀
rotate 15 总共保留 15 份备份文件
compress 开启gzip压缩,能大幅减少日志备份的尺寸
missingok 日志文件不存在的时候不会报错(如果有多个配置,会继续执行)
size 2000M 只有文件大于 2000M 时才轮转
配置项的详细解释可以参考 man logrotate。
2. 设置 crontab 任务
logrotate 程序默认是作为系统全局的 daily 任务执行的,按理来说只需要编写好了配置文件就会自动执行。但我发现这样会有不工作的情况,因此显示地多配置了一个 crontab 任务来执行它,如下:
00 00 * * * /usr/sbin/logrotate -v /etc/logrotate.d/amadeus >> /home/jerry/logrotate.log 2>&1
将参数部分的配置文件路径替换成你自己的配置文件即可。要注意的是必须确保运行 crontab 的用户对日志文件及所在的目录有读写权限。建议直接使用运行 Tomcat 时的用户。
添加 crontab 的方法是使用对应的用户登录系统,执行 crontab -e,按上面的方式添加一行即可。
3. 查看,搜索日志备份
启用 logrotate 后的效果:
[jerry@xxxxxxxx logs]$ ls -lh catalina.out*
-rw-r--r--. 1 jerry xxxxxxxx 2.2G Jan 14 14:52 catalina.out
-rw-r--r--. 1 jerry xxxxxxxx 93M Dec 30 00:00 catalina.out-20131230.gz
-rw-r--r--. 1 jerry xxxxxxxx 83M Dec 31 00:00 catalina.out-20131231.gz
-rw-r--r--. 1 jerry xxxxxxxx 110M Jan 1 00:00 catalina.out-20140101.gz
-rw-r--r--. 1 jerry xxxxxxxx 165M Jan 3 00:01 catalina.out-20140103.gz
-rw-r--r--. 1 jerry xxxxxxxx 111M Jan 4 00:01 catalina.out-20140104.gz
-rw-r--r--. 1 jerry xxxxxxxx 110M Jan 5 00:00 catalina.out-20140105.gz
-rw-r--r--. 1 jerry xxxxxxxx 106M Jan 6 00:00 catalina.out-20140106.gz
-rw-r--r--. 1 jerry xxxxxxxx 167M Jan 7 00:01 catalina.out-20140107.gz
-rw-r--r--. 1 jerry xxxxxxxx 208M Jan 8 00:01 catalina.out-20140108.gz
-rw-r--r--. 1 jerry xxxxxxxx 170M Jan 9 00:01 catalina.out-20140109.gz
-rw-r--r--. 1 jerry xxxxxxxx 194M Jan 10 00:01 catalina.out-20140110.gz
-rw-r--r--. 1 jerry xxxxxxxx 172M Jan 11 00:01 catalina.out-20140111.gz
-rw-r--r--. 1 jerry xxxxxxxx 119M Jan 12 00:00 catalina.out-20140112.gz
-rw-r--r--. 1 jerry xxxxxxxx 145M Jan 13 00:01 catalina.out-20140113.gz
-rw-r--r--. 1 jerry xxxxxxxx 181M Jan 14 00:01 catalina.out-20140114.gz
可以看到,启用了压缩后,每天几个G的日志占用的空间减少到只有100多M。
按这个配置,备份的日志文件都是被压缩过的,会带有 gz 扩展名。当需要查询、查看这些文件的时候,可以使用以下方法:
1. 查看:使用 zless
2. 查找字符串:使用 zgrep
3. 显示内容:使用 zcat
4. 还原文件:gunzip xxxx.gz
一般情况不建议用 gunzip 解压开,而是直接使用 zless,zcat 等工具。例如要从旧日志里 grep 一个关键字并做处理,可以这么做:
zgrep Exception catalina.out-20131230.gz
或者
zcat catalina.out-20131230.gz | grep Exception
使用 Linux 自带的 logrotate 程序来控制日志文件尺寸的更多相关文章
- 用 Linux自带的logrotate 来管理日志
大家可能都有管理日志的需要,比如定时压缩日志,或者当日志超过一定大小时就自动分裂成两个文件等.最近就接到这样一个小任务.我们的程序用的是C语言,用log4cpp的library来实现日志记录.但是问题 ...
- Linux自带神器logrotate详解
Linux自带神器logrotate详解 散尽浮华 运维 3天前 作者:散尽浮华 链接:https://www.cnblogs.com/kevingrace/p/6307298.html 对于 L ...
- 利用Linux自带的logrotate管理日志
日常运维中,经常要对各类日志进行管理,清理,监控,尤其是因为应用bug,在1小时内就能写几十个G日志,导致磁盘爆满,系统挂掉. nohup.out,access.log,catalina.out 本文 ...
- 用Linux自带的Logrotate来管理日志
Logrotate是由cron控制,cron在规定的时间执行 " logrotate /etc/logrotate.conf "命令.将对象日志进行转储,删除,压缩等操作... ...
- Linux环境下使用logrotate工具实现nginx日志切割
一. 前提背景及需求 nginx运行日志默认保存在nginx安装目录下的 /usr/local/nginx/logs 文件夹, 包含access.log和error.log两个文件. (1) acce ...
- Linux下Shell脚本运行程序不输出日志到终端
使用: 脚本路径/脚本名 >/dev/>& 说明: 可以简单的理解/dev/null是Linux下的回收站 >默认是把标准输出重定向 2>&1是把出错输出也定向 ...
- linux之使用cron,logrotate管理日志文件
1) logrotate配置 logrotate 程序是一个日志文件管理工具.用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”. 我们可以根据日志文件的大小,也可以根据其天数来 ...
- 不错的linux下通用的java程序启动脚本
不错的linux下通用的java程序启动脚本(转载) 虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包也必须要修改起动shell. 在网上找到一个挺好的 ...
- Linux如何实现开机启动程序详解
我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤. 加载内核LILO 启动之 ...
随机推荐
- 五子棋 AI(AIpha-beta算法)
博弈树 下过五子棋的人都应该知道,越厉害的人,对棋面的预测程度越深.换句话讲,就是当你下完一步棋,我就能在我的脑海里假设把我所有可能下的地方都下一遍,然后考虑我下完之后你又会下在哪里,最后我根据每次预 ...
- sql server导出大批量数据
使用sqlserver导出数据的时候,如果数据量大于65536那么就要使用xlsx,最大行数为104万 如果导出的时候报错,则需要在本机安装以下程序: https://www.cnblogs.com/ ...
- 【Selenium】【BugList2】geckodriver未安装,报:WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
环境信息:Windows7 64位 + python 3.6.5 + selenium 3.11.0 +pyCharm #coding=utf-8 from selenium import webdr ...
- python 更换 版本
这是一个悲伤的安装ipython的过程. 写下来留个教训吧. 也是希望对博友一些帮助吧. 注: 我也写了一篇window下安装bpython的文章(个人感觉bpython要比ipython强大的多), ...
- 20155326《网络攻防》Exp4 恶意代码分析
20155326<网络攻防>Exp4 恶意代码分析 基础问题回答: 1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪 ...
- VS2015 类模板保存位置
如果安装在C盘,则是如下位置: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ItemTemplates\CSharp ...
- Build.gradle的详细配置说明
转自:http://blog.csdn.net/u012246458/article/details/51722624 apply plugin: 'com.android.application'/ ...
- jvm虚拟机--垃圾回收子系统
转载自cyc2018的github:https://github.com/CyC2018/Interview-Notebook/blob/master/notes/Java%20%E8%99%9A%E ...
- RxSwift学习笔记9:amb/tabkeWhile/tabkeUntil/skipWhile/skipUntil
//amb基本介绍 //当传入多个 Observables 到 amb 操作符时,它将取第一个发出元素或产生事件的 Observable,然后只发出它的元素. //并忽略掉其他的 Observable ...
- BASH 正则表达式和文本处理工具
本节内容 1. 什么是正则 2. grep 3. sed 4. awk 5. 其他补充 一 什么是正则 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方 ...