Linux 中的日志轮换

Linux 中的日志轮换

每当我在目录中执行ls命令时/var/log,我都可以找到日志文件,例如messages,及其旋转版本,例如messages.1.gz

即使我没有使用任何实用程序,例如logrotate,这些文件如何自动轮换?轮换文件的标准是什么(例如日志文件应达到“X”MB 或每“N”天轮换一次)?如何控制(启用/禁用)日志轮转?

笔记:我编写了一个 bash 脚本,它将在每个月的第一天运行。该脚本将压缩日志文件,将压缩文件复制到远程服务器并清空原始日志文件(以便下次运行时可以使用更新的日志)。所以,我不希望日志文件被轮换。

答案1

检查这里是否有文件:/etc/logrotate.d

如果是这样,请删除与您不想旋转的内容相关的内容。但要小心删除的内容,确保对使用 logrotate 轮换的所有文件有一种文件清理方法,否则您将面临有一天醒来后不明白文件系统如何耗尽磁盘空间的风险。

更新

目录中的单个文件内可以指定多个文件logrotate.d,一个例子是syslogfile.这也恰好是messages您提到的日志的目标位置。

/etc/logrotate.d/syslog

/var/log/messages 
/var/log/secure 
/var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
        /bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

更新#2

运行以下命令来查看轮换日志文件的是否是 syslog 而不是 logrotate:

grep -rni "message" /etc/cron.*/*

在 Debian 风格的系统上,系统日志轮换可以由 cron 每日脚本控制,该脚本通常位于/etc/cron.daily/sysklogd.我的 grep 命令应该有助于确定您的情况是否属实(即使您使用的是 RHEL)。

更多信息可以在这里找到:http://www.ducea.com/2006/06/06/rotating-linux-log-files-part-1-syslog/

另请检查:grep -rni "message" /etc/rsyslog.d/*

相关内容