将 cron 输出发送到名称中带有时间戳的文件

Phi*_*ton 56 cron

我在 LAMP 设置上有一个这样的 crontab:

0 0 * * * /some/path/to/a/file.php > $HOME/cron.log 2>&1
Run Code Online (Sandbox Code Playgroud)

这会将文件的输出写入cron.log。但是,当它再次运行时,它会覆盖文件中以前的任何内容。

如何让 cron输出到文件名中带有时间戳的文件?

一个示例文件名是这样的:2010-02-26-000000-cron.log

我并不真正关心格式,只要它有某种时间戳即可。

提前致谢。

fis*_*ion 100

尝试:

0 0 * * * /some/path/to/a/file.php > $HOME/`date +\%Y\%m\%d\%H\%M\%S`-cron.log 2>&1
Run Code Online (Sandbox Code Playgroud)

如果您愿意,可以使用日期格式;一定要%\%上面一样逃脱任何类似的东西。

  • @DevilCode,是的,尽管文件名中的空格在 Unix 中并不是很传统。连字符或下划线可能是更好的选择:`date +\%Y-\%m-\%d_\%H:\%M:\%S-cron.log`。 (8认同)
  • 那些怪异的逃脱角色总是让我着迷。感谢您的提醒! (3认同)

ton*_*gil 14

我强烈建议您使用时间戳将所有内容保存到同一个文件中,如此处所述

消除

2>&1

并在将其保存到日志文件之前通过时间戳脚本运行它(如上面的链接所述)。


Den*_*son 6

您还可以通过执行以下操作将输出附加到日志文件:

0 0 * * * /some/path/to/a/file.php >> $HOME/cron.log 2>&1
Run Code Online (Sandbox Code Playgroud)