Я в основном пытаюсь объявить переменную со значением date () в crontab, поскольку я буду постоянно использовать одну и ту же структуру даты снова и снова, вот как выглядит мой 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? заранее благодарю
Нет, похоже, что переменные в crontab в моем RHEL 6, по крайней мере, не анализируются, как это был бы сценарий оболочки, простой тестовый сценарий с crontab следующим образом:
NOW=$(date)
* * * * * echo $NOW >> /tmp/logfile
приводит к появлению файла журнала, полного буквального $(date)
линии
Я бы посоветовал каждому сценарию поддерживать свои собственные выходные файлы вместо перенаправления stdout из cron, но это не более чем личное предпочтение.