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


37

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

0 0 * * * /some/path/to/a/file.php > $HOME/cron.log 2>&1

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

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

文件名示例如下所示:2010-02-26-000000-cron.log

只要格式带有某种时间戳记,我就不会真正在意它。

提前致谢。


8
如果你不想$HOME/cron.log被覆盖,使用>>>
戴夫·切尼

Answers:


65

尝试:

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

如果愿意,可以使用日期格式;只需确保避免上述任何%类似\%


让我总体上建议一种使用文件名的方法,例如0 0 * * * /some/path/to/a/file.php > $HOME/scriptname-date + \%Y \%m \%d \%H \%M \%S.log
Kristian 2015年

如果您需要更多可读性的代码,请尝试: date +\%Y\ \%m\ \%d\ \%H:\%M:\%S-cron.log
DevilCode '16

4
@DevilCode,是的,尽管文件名中的空格在Unix中不是很常规。连字符或下划线可能是更好的选择:date +\%Y-\%m-\%d_\%H:\%M:\%S-cron.log
裂变

1
那些怪异的逃脱角色总是让我受益。感谢您的提醒!
Tony-Caffe

13

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

去掉

2>&1

并通过时间戳脚本运行它,然后再将其保存到日志文件中(如以上链接中所述)。



0

我这样修改了脚本:

`/bin/date +\%Y\%m\%d`.log

-2

我解决了这个问题;只需在date命令之前添加日期路径(/ bin / date)。


2
请添加更多信息和示例。
Danijel

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.