Назад | Перейти на главную страницу

Привязка значения временной метки к переменной в crontab

Я в основном пытаюсь объявить переменную со значением 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, но это не более чем личное предпочтение.