我有一个 crontab 设置,每小时运行一个 perl 脚本,在整点过后 5 分钟(所以 2:05、3:05、10:05 等):
5 * * * * perl /abs/path/to/my/script.pl >> /abs/path/two/my/script-log.txt 2>&1
如您所见,它还将 STDOUT 和 STDERR 重定向到同一个日志文件。
我被要求重构 Perl 脚本、crontab 条目,或者添加任何必要的新代码/脚本,以便每天晚上午夜,script-log.txt
得到清除/冲洗/清空。
也就是说,每天晚上午夜,如果 script-log.txt
中有 20MB 的文本,则将其清除,使其现在什么都没有(0 字节),然后在凌晨 12:05,crontab 将重新启动,运行 script.pl
,并开始向同一个 script-log.txt
日志文件添加更多文本。
如果有一种方法可以用一些 Linux/Perl 魔法修改 crontab 条目以设置这样一个“每日滚动日志文件”,那将会非常容易。在最坏的情况下,我们总是可以编写一个新脚本来清除 script-log.txt
并 cron 让它在午夜运行。但是我的上司非常希望没有另一个 cron 工作,并且正在寻找一种从条目本身(如果可能的话)来做到这一点的方法。
实际上,我们有很多这样的条目,所以编写“清除脚本”并使其在午夜运行的问题在于我们会在添加/删除其他条目时不断更新清除脚本生成这些类型的日志文件的脚本。因此,如果我们可以在入口级别设置此类清除,则每个 cron 条目都会自行清理。感谢您提前提供任何见解/指示/建议。
最佳答案
您可能想查看 logrotate .
关于linux - 如何从 cron 条目中自动清除 perl 脚本日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13848594/