如何让 crontab 在每次运行作业时生成唯一的日志?

如何让 crontab 在每次运行作业时生成唯一的日志?

这是 crontab 任务

/usr/local/bin/python2.7 /home/scripts/script.py >> /home/scripts/logs/log.log 2>&1

如何在每次运行作业时生成新日志?

每次生成日志文件时,我都喜欢添加一个增加的计数器。不知道该怎么做。

我真的必须运行另一个 cron 作业才能做到这一点吗?

答案1

您可以使用以下date命令生成一个唯一的文件名:

/usr/local/bin/python2.7 /home/scripts/script.py > /home/scripts/logs/"`date +\%d\%m\%y_\%H\%M\%S`".log 2>&1

编辑:确保避免使用百分号\%)。 他们有个特殊意义在 cron 和 crontab 中将返回错误。

这样,<date_time>.log每次运行作业时都会创建一个新的日志文件(名为)。

$ date; touch "`date +%d%m%y_%H%M%S`.log"
  Tue Sep 25 04:39:25 CEST 2012
$ ls *log
  250912_043925.log

假设您的脚本每秒运行的次数不超过一次(如果您运行的是简单的 crontab,则它就不能运行),那么您应该没问题。

如果如评论中所建议的,您的脚本由不同的用户运行,则可以将用户名添加到日志文件的名称中:

/usr/local/bin/python2.7 /home/scripts/script.py > /home/scripts/logs/$(echo -n `whoami`_`date +\%d\%m\%y_\%H\%M\%S`).log 2>&1

相关内容