Я не понимаю, почему 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, чтобы отслеживать выполнение