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

mas*_*ial 6 linux crontab

这是 crontab 作业

/usr/local/bin/python2.7 /home/scripts/script.py >> /home/scripts/logs/log.log 2>&1
Run Code Online (Sandbox Code Playgroud)

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

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

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

ter*_*don 7

您可以使用该date命令生成唯一的(ish)文件名:

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

编辑:确保转义百分比符号( \%)。它们在 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
Run Code Online (Sandbox Code Playgroud)

假设您的脚本每秒运行的频率不超过一次(如果您运行的是简单的 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
Run Code Online (Sandbox Code Playgroud)