Я хочу проверить, работает ли определенный crontab правильно. Я добавил работу, как это:
*/2 * * * * /path_to_my_php_script/info.php >/dev/null 2>&1
Я знаю, что перенаправляю на нулевое устройство, но не уверен, что приведенная выше команда хороша.
* Редактировать 1: В моем / var / log / syslog каждые две минуты у меня появляется следующая ошибка:
(CRON) error (grandchild #2788 failed with exit status 2)
* Редактировать 2: Нет ошибок в журналах с этим новым заданием:
*/2 * * * * /usr/bin/php /path_to_my_php_script/info.php >/dev/null 2>&1
Ответы:
Синтаксис для записи в crontab выглядит правильно. Действительно, если вы отредактируете свой crontab, используя «
crontab -e
» (как и должно быть), вы получите ошибку, если в любом случае укажете синтаксически неверную запись в crontab.Во-первых,
/path_to_my_php_script/info.php
правильно ли работает из командной строки?Если так, это также работает правильно, как это ?:
Если это работает, это работает так?
Шаг (3) аналогичен тому, как cron будет запускать вашу программу (как описано в «man 5 cron»).
Наиболее вероятная проблема, с которой вы сталкиваетесь, заключается в том, что cron PATH использует для запуска вашей программы слишком строгие ограничения. Поэтому вы можете добавить что-то вроде следующего в начало вашей записи crontab (вам нужно будет добавить в любые каталоги, которые понадобятся вашему скрипту):
Также обратите внимание, что по умолчанию будет использоваться cron
/bin/sh
, а не bash. Если вам нужен bash, также добавьте это в начало вашего файла crontab:Обратите внимание, что оба эти изменения затронут все записи в crontab. Если вы просто хотите изменить эти значения для вашей
info.php
программы, вы можете сделать что-то вроде этого:Также стоит упомянуть, что в системе, настроенной на «почту» (другими словами, в системе, в которой настроен MTA [sendmail / postfix / etc]), весь вывод из программ crontab отправляется вам по электронной почте автоматически. В стандартной настольной системе Ubuntu локальная почта не будет настроена, но если вы работаете на сервере, вы можете просто набрать «mail» в терминале, чтобы увидеть все эти cron-сообщения. Это также относится к команде "
at
".источник
Хотя очень редко, иногда Cron перестает работать должным образом, даже если служба работает. Вот как проверить, что crond работает и остановить / запустить службу.
В Linux:
В Ubuntu и других системах на основе Debian:
источник
cron
неcrond
Не перенаправляйте вывод ошибок в / dev / null и grep / var / log / syslog для вывода cron.
Вы можете сразу же показать ошибки при сохранении файла после редактирования
/etc/crontab
или файлов внутри/etc/cron.d/
с помощью:Если редактирование в порядке, вы увидите только
RELOAD
уведомление, ошибки будут появляться какисточник
Вы можете увидеть свой активный cron с помощью команды терминала:
Вот параметры по порядку:
мин (0 - 59)
час (0 - 23)
день месяца (1 - 31)
месяц (1 - 12)
день недели (0 - 6) (воскресенье = 0)
команда
Итак, вы вызываете свой сценарий каждую первую минуту каждого часа. Вы должны проверять свои результаты с более частым интервалом для целей тестирования:
Это будет называть это каждую минуту!
источник
Для временной части в каждой строке вы можете использовать этот тестер cron для проверки / проверки вашего определения времени cron.
источник
Я считаю, что вы также можете использовать
run-parts
для запуска заданий cron вне группы. Это именно то, что cron использует для запуска периодических заданий cron, поэтому, предоставляя соответствующие аргументы, вы можете запускать их в любое время.Если вы просто хотите запустить один файл вместо всех заданий cron, определенных, например,
/etc/cron.daily
вам нужно будет указать аргумент regex вместе с действительным regex.run-parts --list --regex '^p.*d$' /etc
Имейте в виду, что задания cron обычно называются без расширения и помечаются как исполняемые, поэтому убедитесь, что ваши сценарии похожи, хотя использование регулярного выражения может позволить вам запустить сценарий с расширением.
источник
ах !!
получил ответ сам, проверил и не нашел
crond
внутри директории установки по умолчанию т.е./etc/init.d/
сейчас попробую ответить.
примечание - я проверить
cron.allow
,cron.deny
тоже. Пока все хорошо.источник