Добавлять время в результате, напечатанном в терминале (cronjob)

У меня есть конфигурировавший cronjob следующей формы:

0 * * * * php ~/ruta/archivo.php >> ~/log.txt

archivo.php реализовав синхронизацию данных, возврати два возможных ответов:

  • База данных стала отвечающей совремнным требованиям правильно
  • База данных обновлена

Он это сохраняет верно в log.txt но когда я хочу добавить к cron дату команды:

date +'%Y-%m-%d %T' // 2016-01-12 21:59:06

Как я, у меня осталось бы что-то вроде следующее:

0 * * * * php ~/ruta/archivo.php $(date +'%Y-%m-%d %T') >> ~/log.txt

Но увидев log, меня не сохраняет какая-либо информация о команде date, он показывает мне печать как следующее:

La base de datos está actualizada
La base de datos está actualizada
La base de datos está actualizada
La base de datos se actualizó correctamente
La base de datos está actualizada
La base de datos está actualizada
...

Взамен, если я выполняю следующее, если оно функционирует, как я жду:

echo 'Soy un texto: ' $(date +'%Y-%m-%d %T') >> ~/log.txt

Текст в log остается:

...
Soy un texto: 2016-01-12 21:59:06
6
задан 13.01.2016, 06:13
4 ответа

Ты можешь сочетать результаты многообразных команд с { }. Тогда, в твоем crontab:

0 * * * * { php ~/ruta/archivo.php; date +'%Y-%m-%d %T'; } >> ~/log.txt
4
ответ дан 24.11.2019, 15:00

Команда php выполняет файл и потом вторая часть $(date +'%Y-%m-%d %T') интерпретирует это аргументом, не частью ее ejecuciГіn.

Пробует

php -r "include('file.php'); echo Date('formato');" >> log.txt
2
ответ дан 24.11.2019, 15:00

В этой форме:

0 * * * * php ~/ruta/archivo.php $(date +'%Y-%m-%d %T') >> ~/log.txt

date он работает и Ваш вывод используется как второй параметр команды php.

Того, что ты хочешь, ты можешь добиваться (почти) с:

0 * * * * php ~/ruta/archivo.php >> ~/log.txt ; date +'%Y-%m-%d %T' >> ~/log.txt

Здесь команды php и восходите они работают один за другим и вывод обоих идет в ~/log.txt
Но у этого есть проблема, которая возможно, что он или нет значительным для тебя. cron пошли e-mail, когда работа cron заканчивается в ошибке (exist статус, отличный от 0).
С предыдущей линией, если php он возвращает статус, отличный от 0, это будет оставаться скрытым из-за выполнения date.

Если получать e-mail в случае ошибки php - важно для тебя, ты можешь создавать рукописный шрифт, например в/usr/local/bin/php_con_fecha.sh:

#!/bin/bash
php ~/ruta/archivo.php >> ~/log.txt
res=$?
date +'%Y-%m-%d %T' >> ~/log.txt
exit $res

Который ты призвал бы с:

0 * * * * /usr/local/bin/php_con_fecha.sh

Рукописный шрифт сохраняет результат php и дату в log, как ты хочешь. И Ваш exit статус будет тем же самым, что тот команды php.

2
ответ дан 24.11.2019, 15:00

Есть тонкие различия между нею ejecuciГіn команды прямо когда пишут с shell, и когда ты выполняешь их с одной lГ-nea crontab. Одно из этих различий, дело в том, что знаки % должны убегать с \

Пример, который ты представляешь:

0 * * * * php ~/ruta/archivo.php $(date +'%Y-%m-%d %T') >> ~/log.txt

QuedarГ - В следующей формы:

0 * * * * php ~/ruta/archivo.php $(date +'\%Y-\%m-\%d \%T') >> ~/log.txt

Тогда. файл log.txt segГєn контекст quedarГ - в с этим контентом:

 La base de datos se actualizó correctamente 2016-01-12 21:59:06
1
ответ дан 24.11.2019, 15:00