我有一个 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 AM crontab 将重新启动,运行script.pl
,然后开始向同一个script-log.txt
日志文件添加更多文本。
如果有一种方法可以使用一些 Linux/Perl 魔法来修改 crontab 条目以设置这样的“每日滚动日志文件”,那将会非常容易。在最坏的情况下,我们总是可以编写一个新脚本来清除script-log.txt
并在午夜运行它。但是我的上级非常希望没有另一个 cron 工作,并且正在寻找一种方法来从条目本身(如果可能的话)做到这一点。
实际上,我们有几十个类似这样工作的条目,因此编写“清除脚本”并将其定时在午夜运行的问题在于,我们将不断更新清除脚本,因为我们添加/删除其他生成的脚本这些类型的日志文件。因此,如果我们可以在入口级别设置这样的清除,每个 cron 条目都会自行清理。感谢您提前提供任何见解/指针/建议。