前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用logrotate管理Linux的日志文件

如何使用logrotate管理Linux的日志文件

作者头像
小小科
发布2018-05-02 16:41:01
2.1K0
发布2018-05-02 16:41:01
举报
文章被收录于专栏:北京马哥教育北京马哥教育

日志文件包含系统内部执行情况的有用信息。在排除故障或服务器性能分析时往往需要检查日志。对于繁忙的服务器,日志文件可能会在短时间内变得非常大。这将成为一个问题,因为服务器会很快耗尽存储空间。此外,操作一个非常大的日志文件往往会非常棘手。

logrotate 是可以自动转储、压缩和删除旧日志文件的一个非常有用的工具。例如,你可以设置logrotate将日志文件 /var/log/foo的每30天转储一次,并且删除超过6个月的记录。一旦配置完成,logrotate可以完全自动化操作不需要进行人工交互

在主要的Linux发行版中logrotate包通常是默认安装的。如果由于某种原因,logrotate的不存在,您可以使用apt-get或者yum的命令来安装它。

Debian或者Ubuntu

代码语言:javascript
复制
# apt-get install logrotate cron

Fedora, CentOS或者RHEL

代码语言:javascript
复制
# yum install logrotate crontabs

logrotate的配置文件是/etc/logrotate.conf,一般不需要修改。可以在/etc/logrotate.d/目录下放入单独的配置文件定义本文档中需要的功能。

示例一

在第一个例子中,我们将创建一个10 MB的日志文件/var/log/log-file。我们将看到我们如何使用logrotate来管理这个日志文件。 我们首先创建一个10M的日志文件,并用随机位来填充它。

代码语言:javascript
复制
# touch /var/log/log-file# head -c 10M < /dev/urandom > /var/log/log-file

日志文件已经准备就绪,我们将配置logrotate转储这个日志文件。让我们开始创建转储所需要的logrotate配置文件。

代码语言:javascript
复制
# vim /etc/logrotate.d/log-file
代码语言:javascript
复制
/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个归档日志。对于第6个归档,最早的归档文件将被删除。
  • compress:转储完成后,转储的日志将使用gzip压缩。
  • delaycompress:需要与compress选项一起使用,delaycompress参数指示logrotate的不对最新的归档进行压缩。压缩将在下一个转储周期来进行。如果您需要访问的最新备份的存档,这是很有用的。
  • missingok:在转储过程中任何错误都会被忽略,例如,"未找到文件"。
  • notifempty:如果日志文件是空的将不会执行转储。
  • create 644 root root:logrotate归档时可以重命名原始日志文件然后创建一个新的日志文件并赋予与指定的权限。
  • postrotate/endscript:所有其他操作完成后会执行postrotate和endscript间定义的命令。在上面的例子中,处理rsyslogd将重新读取其配置后继续运行。

上面的模板是通用的,配置参数可以根据您的要求各不相同。不是所有的参数可能是必要的。

示例二

在这个例子中,我们想要只在日志文件大小增长超过50MB时转储日志文件。

代码语言:javascript
复制
# vim /etc/logrotate.d/log-file
代码语言:javascript
复制
/var/log/log-file {    size=50M    rotate 5    create 644 root root
    postrotate
        /usr/bin/killall -HUP rsyslogd
    endscript}

示例三

我们希望旧的日志文件根据归档日期进行命名,这可以通过添加dateext参数来实现。

代码语言:javascript
复制
# vim /etc/logrotate.d/log-file
代码语言:javascript
复制
/var/log/log-file {    size=50M    rotate 5    create 644 root root
    postrotate
        /usr/bin/killall -HUP rsyslogd
    endscript}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 马哥Linux运维 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 示例一
  • 示例二
  • 示例三
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档