pno*_*ata 4 linux logging purge logrotate
我正在尝试配置logrotate为每天午夜轮换和删除日志文件,但以前从未使用过它。所以:(a) 我想确认我的配置是正确的,并且 (b) 我需要帮助在午夜自动执行它的日常执行。
我的软件在/abs/path/to/log/myapp-log.txt. 这是我想要发生的事情:
/abs/path/to/log/在任何时间点只有 1 个日志文件;所以每次轮换日志并创建一个新的日志文件时,删除旧的logrotate.conf:
/abs/path/to/log/myapp-log.txt {
daily
copytruncate
create 700 myUser myGroup
dateext
maxage 1
missingok
}
Run Code Online (Sandbox Code Playgroud)
我在这里不确定的一些事情:
daily是否指定 a maxageof 1?missingok做什么?如果日志文件不存在,则忽略系统警告?如果我不指定missingok并且日志文件不存在会发生什么?copytruncate如果我指定daily/ ,我什至需要maxage 1吗?这三个设置感觉有点多余,但不确定每一个扮演什么角色。其次,我如何确保每天午夜运行?克朗?我之所以这么问,是因为我读到了/etc/cron.daily/logrotate每天自动运行的某个地方,但不确定它是如何配置的。提前致谢。
Joh*_*Siu 11
如果我指定的最大值为 1,是否需要每天指定?
是的,您每天都需要,因为您希望此部分每天都执行。这控制了部分的执行频率,而maxage控制了旋转文件的保留时间。它们是两种不同的东西。
missingok 到底在做什么?
missingok意味着如果用于轮换的日志文件不存在,logrotate 将不会抱怨/生成错误。如果未指定,并且缺少用于轮换的日志文件,logrotate 将生成错误日志。
如果我指定 daily/maxage 1,我什至需要 copytruncate 吗?
如果copytruncate现在对您有用,请不要更改它。它适用于原始日志文件
copytruncate 指示 logrotate 创建原始文件的副本(即旋转原始日志文件)并将原始文件截断为零字节大小。这有助于属于该日志文件的相应服务可以写入正确的文件。
在午夜运行 logrotate
有2种方法可以做到。
方法 1 - 更改每日 cron 运行时间
在/etc/crontab 中查找以下行
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
Run Code Online (Sandbox Code Playgroud)
将25 6(表示 6:25AM)更改为0 0。这也将所有每日 cron 作业的开始时间更改为午夜。
方法 2 - 使用自定义 crontab 行
将 logrotate 移出默认的每日 cron 计划
mv /etc/cron.daily/logrotate /etc/logrotate.cronjob
Run Code Online (Sandbox Code Playgroud)
创建自定义 cron 作业。将以下行添加到/etc/crontab
0 0 * * * root /etc/logrotate.cronjob
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
9347 次 |
| 最近记录: |