将时间戳值绑定到 crontab 中的变量

将时间戳值绑定到 crontab 中的变量

我基本上是试图在 crontab 中声明一个具有 date() 值的变量,因为我将不断地重复使用相同的日期结构,下面就是我的 crontab 目前的样子。

php     = '/usr/bin/php'
dir     = '/var/www/bkd'
logs    = '/var/www/bkd/logs'

#10 23 * * *   $php    $dir/inventory/delete.php >>     $logs/delete/delete_$(/bin/date +\%Y\%m\%d\%H\%M\%S).txt
31 00 * * 7    $php    $dir/prices/all.php >>           $logs/prices_all/prices_all_$(/bin/date +\%Y\%m\%d\%H\%M\%S).txt
#30 21 * * 3   $php    $dir/ranks/all.php >>            $logs/ranks/ranks_all_$(/bin/date +\%Y\%m\%d\%H\%M\%S).txt

但我更喜欢这样...时间变量在最后使用

php     = '/usr/bin/php'
dir     = '/var/www/bkd'
logs    = '/var/www/bkd/logs'
time    = $(/bin/date +\%Y\%m\%d\%H\%M\%S).txt

#10 23 * * *   $php    $dir/inventory/delete.php >>     $logs/delete/delete_$time
31 00 * * 7    $php    $dir/prices/all.php >>           $logs/prices_all/prices_all_$time
#30 21 * * 3   $php    $dir/ranks/all.php >>            $logs/ranks/ranks_all_$time

crontab 中是否有类似这样的功能?提前谢谢

答案1

不,似乎至少在我的 RHEL 6 中 crontab 中的变量没有像 shell 脚本那样被解析,一个简单的 crontab 测试场景如下:

NOW=$(date)
* * * * * echo $NOW >> /tmp/logfile

导致日志文件中满是文字$(date)

我建议每个脚本维护它自己的输出文件而不是从 cron 重定向 stdout,但这在很大程度上取决于个人喜好。

相关内容