我基本上是试图在 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,但这在很大程度上取决于个人喜好。