如何在 cron 作业的输出文件名末尾添加时间戳?

如何在 cron 作业的输出文件名末尾添加时间戳?

我想将每个 crontab 输出跟踪到单独的文件中。通常,我将其用作 crontab 条目:

1  *    * * *   root    php /mix/dostuff.php > /tmp/dostuff.txt

现在,我想将其改为写入/tmp/dostuff.txt,而不是写入/tmp/dostuff-YYYY-MM-DD-HH-II-SS.txt

我可以使用以下命令获取日期部分:

TIMESTAMP=`date +%Y-%m-%H\ %k:%M:%S`

现在,我如何将此时间戳粘贴到输出文件中?

答案1

crontabs 在与默认 shell 不同的环境中运行,因此您可以在主目录下使用一个小型 shell 脚本,其中包含类似这样的内容(我们将其命名为script.sh):

#!/bin/bash
php /mix/dostuff.php > /tmp/dostuff-`date +%Y-%m-%H\ %k:%M:%S`.txt
exit

然后更改此脚本的权限以确保它是可执行的,755 应该没问题。然后在您的 crontab 中:

1  *    * * *   root    /home/yourusername/script.sh

答案2

1  *    * * *   root    php /mix/dostuff.php > "/tmp/dostuff-`date +\%Y-\%m-\%H\ \%k:\%M:\%S`.txt"

就那么简单。

答案3

在 CentOS 6.6 上,我使用

*/10 * * * * /usr/bin/php -q /var/www/script.php > cron-job-log-$(date +\%Y\%m\%d\%H\%M\%S).txt

它将每 10 分钟创建一个文件

cron-job-log-20150401124001.txt

答案4

按照下面的方法尝试一下。它会完美地工作。

1 * * * * root /home/你的用户名/script.sh > /var/log/foldername/output_filename_$(date +\%Y-\%m-\H%).log

通过之前创建的备份文件夹放入日志路径中。

相关内容