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

ari*_*ayu 5 shell cron

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

1  *    * * *   root    php /mix/dostuff.php > /tmp/dostuff.txt
Run Code Online (Sandbox Code Playgroud)

现在,我想让它写而不是/tmp/dostuff.txt,/tmp/dostuff-YYYY-MM-DD-HH-II-SS.txt

我可以得到日期部分,使用这个:

TIMESTAMP=`date +%Y-%m-%H\ %k:%M:%S`
Run Code Online (Sandbox Code Playgroud)

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

Eti*_*mps 8

1  *    * * *   root    php /mix/dostuff.php > "/tmp/dostuff-`date +\%Y-\%m-\%H\ \%k:\%M:\%S`.txt"
Run Code Online (Sandbox Code Playgroud)

就那么简单。

  • crontab(5): "````sixth''' 字段(该行的其余部分)指定要运行的命令。该行的整个命令部分,直到换行符或 % 字符,将由 /bin/ 执行sh 或由 crontab 文件的 SHELL 变量中指定的 shell。” 如果需要,您甚至可以在 crontab 行中编写整个 shell 脚本! (3认同)
  • 我不明白这在这里会有什么问题。cron 环境足以执行此命令。此外,它有效,我只是自己测试过。 (2认同)

小智 1

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

#!/bin/bash
php /mix/dostuff.php > /tmp/dostuff-`date +%Y-%m-%H\ %k:%M:%S`.txt
exit
Run Code Online (Sandbox Code Playgroud)

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

1  *    * * *   root    /home/yourusername/script.sh
Run Code Online (Sandbox Code Playgroud)