我有一个应用程序每小时轮换自己的日志文件。每个小时我都想删除所有超过n
几天的文件。logrotate
由于商业政策,我不得不这样做。
logrotate
那么每小时运行这个命令相当于什么?
find /var/log/app -name "*.old" -mtime +1 -exec rm -f {} \;
答案1
logrotate
每天运行一次,可以在此处找到该脚本/etc/cron.daily/logrotate
(在 CentOS 7 上)。如果您想每小时运行一次,您首先需要将其移至/etc/cron.hourly/
.那么对于上面的命令,等效的logrotate
脚本可能如下所示,
$ cat /etc/logrotate.d/app
/var/log/app/*.old {
hourly
rotate 0
firstaction
/usr/bin/find /var/log/app/ -name "*.old" -mtime +1 -delete
endscript
nocreate
missingok
notifempty
}
答案2
这是一种可能性,你需要测试:
cat /etc/logrotate.d/customapp
/var/log/app/*.old {
daily
missingok
rotate 0
notifempty
}
为什么旋转 0 ?
如果 count 为 0,则旧版本将被删除而不是轮换。 (来源:男人)