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

Cron - не выполняет команду каждые 10 минут

Я не понимаю, почему cron на самом деле не выполняет команду каждые 10 минут.

в crontab -e Я добавил:

*/10 * * * * /var/www/myproject/recording/batch.pl

Я мог видеть в журнале cron, что он запускается каждые 10 минут:

Mar 17 10:50:01 host crond[26335]: (root) CMD (/var/www/myproject/recording/batch.pl)
Mar 17 11:00:01 host crond[26357]: (root) CMD (/var/www/myproject/recording/batch.pl)
Mar 17 11:10:01 host crond[26418]: (root) CMD (/var/www/myproject/recording/batch.pl)
Mar 17 11:20:01 host crond[26657]: (root) CMD (/var/www/myproject/recording/batch.pl)

но на самом деле он не выполняет команду.

Когда я выполняю эту команду вручную в консоли Linux, она работает нормально.

Как сказал CloudWeavers, это больше всего связано с отсутствующей переменной окружения, чтобы проверить, что именно отсутствует, вы можете отредактировать задание cron, чтобы записать весь стандартный вывод / ошибку в файл журнала, чтобы вы могли просмотреть его, чтобы узнать, что его останавливает:

*/10 * * * * /var/www/myproject/recording/batch.pl &> output.log

CRON не наследует все переменные вашего окружения. Некоторое программное обеспечение необходимо вызывать вручную (например, вызов ifconfigили /sbin/ifconfig не равно, если у вас нет действительной переменной среды $ PATH).

Также убедитесь, что он исполняемый и что ваш shebang правильно определен (в противном случае вам придется добавить свою команду с помощью интерпретатора).

как насчет настройки вашего crontab как это

*/10 * * * * /usr/bin/perl /var/www/myproject/recording/batch.pl 2>&1 | tee -a /var/log/myproject-recording-batch.log

затем вы можете отслеживать файл журнала /var/log/myproject-recording-batch.log, чтобы отслеживать выполнение