我在 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)。