Linux日志文件总管——logrotate
日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到。对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题。除此之外,处理一个单个的庞大日志文件也常常是件十分棘手的事。
logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。例如,你可以设置logrotate,让/var/log/foo日志文件每30天轮循,并删除超过6个月的日志。配置完后,logrotate的运作完全自动化,不必进行任何进一步的人为干预。另外,旧日志也可以通过电子邮件发送,不过该选项超出了本教程的讨论范围。
主流Linux发行版上都默认安装有logrotate包,如果出于某种原因,logrotate没有出现在里头,你可以使用apt-get或yum命令来安装。
在Debian或Ubuntu上:
# apt-get install logrotate cron
在Fedora,CentOS或RHEL上:
# yum install logrotate crontabs
logrotate的配置文件是/etc/logrotate.conf,通常不需要对它进行修改。日志文件的轮循设置在独立的配置文件中,它(们)放在/etc/logrotate.d/目录下。
样例一
在第一个样例中,我们将创建一个10MB的日志文件/var/log/log-file。我们将展示怎样使用logrotate来管理该日志文件。
我们从创建一个日志文件开始吧,然后在其中填入一个10MB的随机比特流数据。
# touch /var/log/log-file# head -c 10M < /dev/urandom > /var/log/log-file
由于现在日志文件已经准备好,我们将配置logrotate来轮循该日志文件。让我们为该文件创建一个配置文件。
# vim /etc/logrotate.d/log-file
/var/log/log-file { monthly rotate 5 compress delaycompress missingok notifempty create 644 root root postrotate /usr/bin/killall -HUP rsyslogd endscript}
这里:
monthly: 日志文件将按月轮循。其它可用值为‘daily’,‘weekly’或者‘yearly’。
rotate 5: 一次将存储5个归档日志。对于第六个归档,时间最久的归档将被删除。
compress: 在轮循任务完成后,已轮循的归档将使用gzip进行压缩。
delaycompress: 总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。
missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。
notifempty: 如果日志文件为空,轮循不会进行。
create 644 root root: 以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件。
postrotate/endscript: 在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。
上面的模板是通用的,而配置参数则根据你的需求进行调整,不是所有的参数都是必要的。
样例二
在本例中,我们只想要轮循一个日志文件,然而日志文件大小可以增长到50MB。
# vim /etc/logrotate.d/log-file
/var/log/log-file { size=50M rotate 5 create 644 root root postrotate /usr/bin/killall -HUP rsyslogd endscript}
样例三
我们想要让旧日志文件以创建日期命名,这可以通过添加dateext常熟实现。
# vim /etc/logrotate.d/log-file
/var/log/log-file { monthly rotate 5 dateext create 644 root root postrotate /usr/bin/killall -HUP rsyslogd endscript}
这将让归档文件在它们的文件名中包含日期信息。
排障
这里提供了一些logrotate设置的排障提示。
1. 手动运行logrotate
logrotate可以在任何时候从命令行手动调用。
要调用为/etc/lograte.d/下配置的所有日志调用logrotate:
# logrotate /etc/logrotate.conf
要为某个特定的配置调用logrotate:
# logrotate /etc/logrotate.d/log-file
2. 演练
排障过程中的最佳选择是使用‘-d’选项以预演方式运行logrotate。要进行验证,不用实际轮循任何日志文件,可以模拟演练日志轮循并显示其输出。
# logrotate -d /etc/logrotate.d/log-file
正如我们从上面的输出结果可以看到的,logrotate判断该轮循是不必要的。如果文件的时间小于一天,这就会发生了。
3. 强制轮循
即使轮循条件没有满足,我们也可以通过使用‘-f’选项来强制logrotate轮循日志文件,‘-v’参数提供了详细的输出。
# logrotate -vf /etc/logrotate.d/log-file
reading config file /etc/logrotate.d/log-filereading config info for /var/log/log-file Handling 1 logs rotating pattern: /var/log/log-file forced from command line (5 rotations)empty log files are rotated, old logs are removedconsidering log /var/log/log-file log needs rotatingrotating log /var/log/log-file, log->rotateCount is 5dateext suffix '-20140916'glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'renaming /var/log/log-file.5.gz to /var/log/log-file.6.gz (rotatecount 5, logstart 1, i 5),old log /var/log/log-file.5.gz does not existrenaming /var/log/log-file.4.gz to /var/log/log-file.5.gz (rotatecount 5, logstart 1, i 4),old log /var/log/log-file.4.gz does not exist. . .renaming /var/log/log-file.0.gz to /var/log/log-file.1.gz (rotatecount 5, logstart 1, i 0),old log /var/log/log-file.0.gz does not existlog /var/log/log-file.6.gz doesn't exist -- won't try to dispose of itrenaming /var/log/log-file to /var/log/log-file.1creating new /var/log/log-file mode = 0644 uid = 0 gid = 0running postrotate scriptcompressing log with: /bin/gzip
4. Logrotate的记录日志
logrotate自身的日志通常存放于/var/lib/logrotate/status目录。如果处于排障目的,我们想要logrotate记录到任何指定的文件,我们可以指定像下面这样从命令行指定。
# logrotate -vf –s /var/log/logrotate-status /etc/logrotate.d/log-file
5. Logrotate定时任务
logrotate需要的cron任务应该在安装时就自动创建了,我把cron文件的内容贴出来,以供大家参考。
# cat /etc/cron.daily/logrotate
#!/bin/sh # Clean non existent log file entries from status filecd /var/lib/logrotatetest -e status || touch statushead -1 status > status.cleansed 's/"//g' status | while read logfile datedo [ -e "$logfile" ] && echo "\"$logfile\" $date"done >> status.cleanmv status.clean status test -x /usr/sbin/logrotate || exit 0/usr/sbin/logrotate /etc/logrotate.conf
小结一下,logrotate工具对于防止因庞大的日志文件而耗尽存储空间是十分有用的。配置完毕后,进程是全自动的,可以长时间在不需要人为干预下运行。本教程重点关注几个使用logrotate的几个基本样例,你也可以定制它以满足你的需求。
转载于:https://blog.51cto.com/10915585/1731165
Linux日志文件总管——logrotate相关推荐
- linux去掉日志中的skipping,Linux日志文件总管 logrotate
logrotate介绍 参考:https://linux.cn/article-4126-1.html 参考:https://blog.csdn.net/vicky_lxw/article/detai ...
- 位于/var/log目录下的20个Linux日志文件
位于/var/log目录下的20个Linux日志文件[译] from:http://buptguo.com/2014/01/16/linux-var-log-files/ 原文地址:20 Linux ...
- linux日志文件优缺点,Linux日志文件总结
Linux日志文件总结 近期做笔试题目,考察Linux日志配置文件相关内容,由于对此不了解,故看鸟哥的私房菜中的认识与分析日志文件一章,总结如下相关信息. 日志文件可以记录一个时间的何时.何地.何人. ...
- linux日志管理工具logrotate配置
linux日志管理工具logrotate配置 logrotate介绍 logrotate配置讲解 主配置文件解释(/etc/logrotate.conf) logrotete 命令参数 添加配置 以添 ...
- linux tomcat 日志路径,linux日志文件在哪 linux安装tomcat
linux日志文件在哪 本例使用的是centos6.5版本号 一.首先到官方下载tomcat服务: ? 二.将tomcat上传至linuxserver中 本人在根文件夹下建立了一个rommr文件夹 一 ...
- linux日志文件怎么查看,linux 日志文件查看
记录下日志中常用的日志查看命令. 1. tail -n 10 -f **.log 显示日志文件尾部10行日志,当有新日志产生,会追加显示. 2. tail 命令 现ff.sh中有如下信息: [ro ...
- Linux中log的目录,/var/log目录中Linux日志文件的功能详解
介绍下/var/log/中日志文件的所在位置以及包含的内容. 了解这些不同的日志文件,有助于在遇到紧急情况时,从容找出问题并加以解决. 这里介绍20个位于/var/log/ 目录之下的日志文件. 其中 ...
- 2. linux的日志文件在哪个目录,位于/var/log目录下的20个Linux日志文件
如果你多数时间都在使用Linux系统,那么你有必要知道系统的日志文件位于哪里,以及每个日志文件是关于哪些内容的.在系统正常的时候学习理解各种日志文件的内容,有助于在遇到紧急情况时通过日志文件定位问题所 ...
- /var/log目录中Linux日志文件的功能详解
介绍下/var/log/中日志文件的所在位置以及包含的内容. 了解这些不同的日志文件,有助于在遇到紧急情况时,从容找出问题并加以解决. 这里介绍20个位于/var/log/ 目录之下的日志文件. 其中 ...
最新文章
- 清华学霸震撼演讲:“你可曾为学习拼尽全力?”
- Adaboost原理与推导
- 如何以编程方式在Android上截屏?
- Linux下php5.3编译oracle客户端
- oracle绑定变量赋值,Oracle教程之绑定变量
- Java黑皮书课后题第4章:*4.11(十进制转十六进制)编写程序,提示用户输入0~15之间的一个整数,显示其对应的十六进制数。对于不正确的输入数字,提示非法输入
- [Qt教程] 第38篇 网络(八)TCP(二)
- 简述springmvc过程_spring mvc的工作流程是什么?
- move.js操作CSS3动画
- 深入理解ES6之《迭代器与生成器》
- 拓端tecdat|如何在R语言中建立六边形矩阵热图heatmap可视化
- 被信息控制的我,心感不安
- 富文本++php+源码,轻量级富文本编辑器wangEditor
- 【王道考研】计算机网络知识点
- windows 搭建kms服务器激活_自建KMS激活服务器的技巧
- linux命令ftps,Linux下FTP服务器应用之FTPS(FTP+SSL)
- ygo游戏王卡组_游戏王ygocore
- b站小姐姐词云视频制作学习记录
- php视频降清晰度,HTML5视频播放器-video-js(带清晰度切换) | 小灰灰博客
- ORACLE ORA-01950 对表空间无权限
热门文章
- 危险!!!也许你的web网站或服务正在悄无声息地被SQL注入
- MachineLearning(2)-图像分类常用数据集
- 《机器学习实战》笔记(04):基于概率论的分类方法 - 朴素贝叶斯分类
- python爬虫的数据如何解决乱码_写爬虫时如何解决网页乱码问题
- Java web后端6 java Bean EL表达式
- 中科大 计算机网络4 网络核心Core 分组交换 电路交换
- Android Studio 突然出现很多红色波浪线或红色感叹号解决方案
- ARM和NEON指令 very nice
- 三网融合情况下,实时语音通信技术解决之道
- springCloud - 第9篇 - 同步配置文件(消息总线方式)