Я установил Mautic (почтовая программа). Требуется 3 cronjobs для выполнения правильно.
php /var/www/mydomainname/htdocs/app/console mautic:segments:update
php /var/www/mydomainname/htdocs/app/console mautic:campaigns:update
php /var/www/mydomainname/htdocs/app/console mautic:campaigns:trigger
Я нахожусь на Ubuntu 18.04 и использую PHP 7.0x.
Когда я делаю sudo php /var/www/mydomainname/htdocs/app/console mautic:campaigns:trigger
, или любые другие из этих 3 упомянули выше, они работают без проблемы. Я получаю корректный вывод, и он выполняется.
Однако, когда я поместил те же команды в crontab, ничего не происходит.
Я попробовал все. В корне crontab, в www-данных crontab, в моем пользователе crontab, с полными путями к команде PHP7.0 (в /usr/bin/php7.0
). Даже попробованный сначала изменение на php
каталог и этажерка.
Например:
* * * * * /usr/bin/php7.0 /var/www/mydomainname/htdocs/app/console mautic:segments:update
Или:
* * * * * sudo /usr/bin/php7.0 /var/www/mydomainname/htdocs/app/console mautic:segments:update
Или:
* * * * * cd /usr/bin sudo php7.0 /var/www/mydomainname/htdocs/app/console mautic:segments:update
Ничто не добивается цели при использовании crontab.
Кто-либо знает почему?
От [1 190] Jens A. Koch ответ к [1 132] CronJob, не работающий ([1 133] ГРАБЯТ ) на [1 134] Переполнение стека :
Вот руководство контрольного списка по отладке, не работающей cronjobs:
- демон Крона, работающий?
- Выполнение
ps ax | grep cron
и ищут крон.- Debian:
service cron start
илиservice cron restart
- работа крона?
* * * * * /bin/echo "cron works" >> /tmp/file
- корректный Синтаксис? Посмотрите ниже.
- у Вас, очевидно, должен быть доступ для записи к файлу, к которому Вы перенаправляете вывод. Уникальное имя файла в
/tmp
, который в настоящее время не существует, должно всегда быть перезаписываемо.- команда, работающая автономный?
- Проверка, если сценарий имеет ошибку, путем выполнения пробного прогона на CLI
- при тестировании команды, тест как пользователь, crontab которого Вы редактируете, который не мог бы быть Вашим входом в систему или корнем
- , крон может выполнить Ваше задание?
- Проверка
/var/log/cron.log
или/var/log/messages
для ошибок.- Ubuntu:
grep CRON /var/log/syslog
- Redhat:
/var/log/cron
- полномочия Проверки
- исполнимый флаг набора на команде:
chmod +x /var/www/app/cron/do-stuff.php
- при перенаправлении вывода команды в файл проверьте, что у Вас есть разрешение записать в ту Проверку файла/каталога
- пути
- , хижины проверки / hashbangs строка
- не полагаются на переменные среды как ПУТЬ, поскольку их значение, вероятно, не будет тем же под кроном, поскольку под интерактивной сессией
- не подавляют вывод, в то время как отладка
- наиболее часто используемый является этим подавлением:
30 1 * * * command > /dev/null 2>&1
- повторно включают стандартный вывод или вывод сообщений стандартной погрешности путем удаления
>/dev/null 2>&1
в целом; или возможно перенаправление в файл в месте, где у Вас есть доступ для записи:>>cron.out 2>&1
добавит стандартный вывод и стандартную погрешность к [1 115] в корневом каталоге пользователя вызова.Все еще работа?Черт!
- Повышение уровень отладки
- крона <литий> Debian
в [1 116] литий> <литий> установил
EXTRA_OPTS="-L 2"
литий> <литий>service cron restart
литий> <литий>tail -f /var/log/syslog
для наблюдения сценариев, выполняемых литий>- , Ubuntu
<литий> в [1 120] литий> <литий> добавляет или комментирует строку
cron.crit /var/log/cron.log
литий> <литий> регистратор перезагрузкиsudo /etc/init.d/rsyslog reload
литий> <литий>, повторно выполненный крон литий> <литий> открывает/var/log/cron.log
и ищет подробный вывод ошибок литий>- Напоминание: деактивируйте уровень журнала, когда Вы сделаны с отладкой
- крон Выполнения и проверяете файлы журнала снова
Синтаксис Cronjob
# Minute Hour Day of Month Month Day of Week User Command # (0-59) (0-23) (1-31) (1-12 or Jan-Dec) (0-6 or Sun-Sat) 0 2 * * * root /usr/bin/find
, Этот синтаксис только [1 193] корректные для
root
пользователь. Обычный пользовательcrontab
синтаксис не имеет поле User (обычным пользователям не разрешают выполнить код как никакому другому пользователю);# Minute Hour Day of Month Month Day of Week Command # (0-59) (0-23) (1-31) (1-12 or Jan-Dec) (0-6 or Sun-Sat) 0 2 * * * /usr/bin/find
Команды Crontab
crontab -l
- Списки задачи крона всего пользователя.
crontab -e
, для определенного пользователя:crontab -e -u agentsmith
- Запускает сеанс редактирования Вашего crontab файла.
- при выходе из редактора измененный crontab установлен автоматически.
crontab -r
- Удаляет Вашу crontab запись из спулера крона, но не из crontab файла.