Cronjobs, не работающий, но та же команда, хорошо работает из командной строки

Я установил 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.

Кто-либо знает почему?

2
задан 10 November 2019 в 15:29

1 ответ

От [1 190] Jens A. Koch ответ к [1 132] CronJob, не работающий ([1 133] ГРАБЯТ ) на [1 134] Переполнение стека :

Вот руководство контрольного списка по отладке, не работающей cronjobs:

  1. демон Крона, работающий?
    • Выполнение ps ax | grep cron и ищут крон.
    • Debian: service cron start или service cron restart
  2. работа крона?
    • * * * * * /bin/echo "cron works" >> /tmp/file
    • корректный Синтаксис? Посмотрите ниже.
    • у Вас, очевидно, должен быть доступ для записи к файлу, к которому Вы перенаправляете вывод. Уникальное имя файла в /tmp, который в настоящее время не существует, должно всегда быть перезаписываемо.
  3. команда, работающая автономный?
    • Проверка, если сценарий имеет ошибку, путем выполнения пробного прогона на CLI
    • при тестировании команды, тест как пользователь, crontab которого Вы редактируете, который не мог бы быть Вашим входом в систему или корнем
  4. , крон может выполнить Ваше задание?
    • Проверка /var/log/cron.log или /var/log/messages для ошибок.
    • Ubuntu: grep CRON /var/log/syslog
    • Redhat: /var/log/cron
  5. полномочия Проверки
    • исполнимый флаг набора на команде: chmod +x /var/www/app/cron/do-stuff.php
    • при перенаправлении вывода команды в файл проверьте, что у Вас есть разрешение записать в ту Проверку файла/каталога
  6. пути
    • , хижины проверки / hashbangs строка
    • не полагаются на переменные среды как ПУТЬ, поскольку их значение, вероятно, не будет тем же под кроном, поскольку под интерактивной сессией
  7. не подавляют вывод, в то время как отладка
    • наиболее часто используемый является этим подавлением: 30 1 * * * command > /dev/null 2>&1
    • повторно включают стандартный вывод или вывод сообщений стандартной погрешности путем удаления >/dev/null 2>&1 в целом; или возможно перенаправление в файл в месте, где у Вас есть доступ для записи: >>cron.out 2>&1 добавит стандартный вывод и стандартную погрешность к [1 115] в корневом каталоге пользователя вызова.

Все еще работа?Черт!

  1. Повышение уровень отладки
    • крона <литий> 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 и ищет подробный вывод ошибок
    • Напоминание: деактивируйте уровень журнала, когда Вы сделаны с отладкой
  2. крон Выполнения и проверяете файлы журнала снова

Синтаксис 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

  1. crontab -l
    • Списки задачи крона всего пользователя.
  2. crontab -e, для определенного пользователя: crontab -e -u agentsmith
    • Запускает сеанс редактирования Вашего crontab файла.
    • при выходе из редактора измененный crontab установлен автоматически.
  3. crontab -r
    • Удаляет Вашу crontab запись из спулера крона, но не из crontab файла.
-3
ответ дан 3 December 2019 в 06:18

Другие вопросы по тегам:

Похожие вопросы: