日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到。对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题。除此之外,处理一个单个的庞大日志文件也常常是件十分棘手的事。

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相关推荐

  1. linux去掉日志中的skipping,Linux日志文件总管 logrotate

    logrotate介绍 参考:https://linux.cn/article-4126-1.html 参考:https://blog.csdn.net/vicky_lxw/article/detai ...

  2. 位于/var/log目录下的20个Linux日志文件

    位于/var/log目录下的20个Linux日志文件[译] from:http://buptguo.com/2014/01/16/linux-var-log-files/ 原文地址:20 Linux ...

  3. linux日志文件优缺点,Linux日志文件总结

    Linux日志文件总结 近期做笔试题目,考察Linux日志配置文件相关内容,由于对此不了解,故看鸟哥的私房菜中的认识与分析日志文件一章,总结如下相关信息. 日志文件可以记录一个时间的何时.何地.何人. ...

  4. linux日志管理工具logrotate配置

    linux日志管理工具logrotate配置 logrotate介绍 logrotate配置讲解 主配置文件解释(/etc/logrotate.conf) logrotete 命令参数 添加配置 以添 ...

  5. linux tomcat 日志路径,linux日志文件在哪 linux安装tomcat

    linux日志文件在哪 本例使用的是centos6.5版本号 一.首先到官方下载tomcat服务: ? 二.将tomcat上传至linuxserver中 本人在根文件夹下建立了一个rommr文件夹 一 ...

  6. linux日志文件怎么查看,linux 日志文件查看

    记录下日志中常用的日志查看命令. 1.  tail -n 10 -f  **.log 显示日志文件尾部10行日志,当有新日志产生,会追加显示. 2. tail 命令 现ff.sh中有如下信息: [ro ...

  7. Linux中log的目录,/var/log目录中Linux日志文件的功能详解

    介绍下/var/log/中日志文件的所在位置以及包含的内容. 了解这些不同的日志文件,有助于在遇到紧急情况时,从容找出问题并加以解决. 这里介绍20个位于/var/log/ 目录之下的日志文件. 其中 ...

  8. 2. linux的日志文件在哪个目录,位于/var/log目录下的20个Linux日志文件

    如果你多数时间都在使用Linux系统,那么你有必要知道系统的日志文件位于哪里,以及每个日志文件是关于哪些内容的.在系统正常的时候学习理解各种日志文件的内容,有助于在遇到紧急情况时通过日志文件定位问题所 ...

  9. /var/log目录中Linux日志文件的功能详解

    介绍下/var/log/中日志文件的所在位置以及包含的内容. 了解这些不同的日志文件,有助于在遇到紧急情况时,从容找出问题并加以解决. 这里介绍20个位于/var/log/ 目录之下的日志文件. 其中 ...

最新文章

  1. 清华学霸震撼演讲:“你可曾为学习拼尽全力?”
  2. Adaboost原理与推导
  3. 如何以编程方式在Android上截屏?
  4. Linux下php5.3编译oracle客户端
  5. oracle绑定变量赋值,Oracle教程之绑定变量
  6. Java黑皮书课后题第4章:*4.11(十进制转十六进制)编写程序,提示用户输入0~15之间的一个整数,显示其对应的十六进制数。对于不正确的输入数字,提示非法输入
  7. [Qt教程] 第38篇 网络(八)TCP(二)
  8. 简述springmvc过程_spring mvc的工作流程是什么?
  9. move.js操作CSS3动画
  10. 深入理解ES6之《迭代器与生成器》
  11. 拓端tecdat|如何在R语言中建立六边形矩阵热图heatmap可视化
  12. 被信息控制的我,心感不安
  13. 富文本++php+源码,轻量级富文本编辑器wangEditor
  14. 【王道考研】计算机网络知识点
  15. windows 搭建kms服务器激活_自建KMS激活服务器的技巧
  16. linux命令ftps,Linux下FTP服务器应用之FTPS(FTP+SSL)
  17. ygo游戏王卡组_游戏王ygocore
  18. b站小姐姐词云视频制作学习记录
  19. php视频降清晰度,HTML5视频播放器-video-js(带清晰度切换) | 小灰灰博客
  20. ORACLE ORA-01950 对表空间无权限

热门文章

  1. 危险!!!也许你的web网站或服务正在悄无声息地被SQL注入
  2. MachineLearning(2)-图像分类常用数据集
  3. 《机器学习实战》笔记(04):基于概率论的分类方法 - 朴素贝叶斯分类
  4. python爬虫的数据如何解决乱码_写爬虫时如何解决网页乱码问题
  5. Java web后端6 java Bean EL表达式
  6. 中科大 计算机网络4 网络核心Core 分组交换 电路交换
  7. Android Studio 突然出现很多红色波浪线或红色感叹号解决方案
  8. ARM和NEON指令 very nice
  9. 三网融合情况下,实时语音通信技术解决之道
  10. springCloud - 第9篇 - 同步配置文件(消息总线方式)