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

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

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

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

这会将文件的输出写入计划日志。但是,当它再次运行时,它会覆盖文件中先前的所有内容。

我怎样才能让 cron输出到文件名中带有时间戳的文件?

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

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

提前致谢。

答案1

尝试:

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

如果愿意,可以尝试各种日期格式;但一定要像上面一样转义任何%类似 的格式。\%

答案2

我强烈建议你使用时间戳将所有内容保存到同一个文件中,因为在 Abdullah Diab 的博客上解释

消除

2>&1

...并在将其保存到日志文件之前通过时间戳脚本运行它。

timestamp.sh脚本:

#!/bin/bash
while read x; do
    echo -n `date +%d/%m/%Y\ %H:%M:%S`;
    echo -n " ";
    echo $x;
done

记得chmod +x timestamp.sh使其可执行。

然后编辑 cron 作业行,crontab -e如下所示:

/path/to/my/command.sh 2>&1 | /path/to/timestap.sh >> /var/log/cron/my_log.log

答案3

您还可以通过如下方式将输出附加到日志文件:

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

答案4

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

相关内容