linux - 如何从 cron 条目中自动清除 perl 脚本日志?

标签 linux perl logging cron purge

我有一个 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/

相关文章:

linux - Beaglebone 黑色 USB 主机 - 未检测到 FTDI 设备

linux - 如何使用 expect 从 SFTP 服务器捕获 sftp ls 命令的输出?

regex - 使用正则表达式将 awk one-liner 移植到 perl(汇总数据组)

Perl:这段代码怎么可能有效?

mysql - DBD::mysql fetchrow_array 失败:没有 execute() 的 fetch()?

java - Log4j2 突出显示模式在文本编辑器中不起作用?

linux - 如何查明是什么在夜间从我的 Linux 启动端口扫描?

linux - MongoDB 不能作为独立的 EC2 AWS 实例 CENTOS 7

java - 使用 log4j 进行日志记录的嵌入式 Tomcat

java - 如何增加 log4j 输出缓冲区以记录整个字符串,而不仅仅是前 100 个字符?