Запуск PHP Cron Job с аргументами

Я пытаюсь запускать PHP-скрипт один раз в день на сервере Ubuntu 13.10 с php5.

У меня есть задания cron, настроенные через панель управления ajenti, проверенные с помощью crontab -l для этой команды.

php /path/script.php site_id=2 table=clicks

Я корректировал время, пытаясь заставить его работать, но в основном я хочу запустить его в 2 часа ночи.

0 2 * * * 

Я попытался запустить скрипт напрямую, запустив его через /usr/bin/php, /usr/bin/php5/ и php, и ничто так и не оставило следа в системном журнале, журнале apache или файлах ошибок (уровень трассировки 8 )

Я пытался запустить его в 2 часа ночи, поэтому я установил его таким образом, но при запуске date на терминале текущее время отображается как

Чт 6 февраля 07 : 44: 29 UTC 2014

Я пытался запускать задания cron в 7, тоже что-то, и опять ничего не запускается.

Есть идеи? Помимо системного журнала, есть ли в Ubuntu ведение журнала для заданий cron, чтобы увидеть, выполняются они или нет и почему?

Кроме того, это правильный способ отправки аргументов? Должен ли скрипт принимать их иначе, чем веб-скрипт?

2
задан 6 February 2014 в 12:58

1 ответ

Во-первых, проверьте правильность работы вашей команды из командной строки:

/usr/bin/env php /path/to/script.php arguments

Во-вторых, проверьте, что ваш cron запущен:

ps auxw | grep cron

Должна быть строка как (выделяется с ^ mine)

root      1537  0.0  0.0  19112   336 ?        Ss    2012   1:03 cron
^^^^                                                             ^^^^

Если cron работает правильно, проверьте другие сообщения cron из syslog:

sudo zgrep CRON /var/log/syslog*

По умолчанию запускаются различные задачи как root, настроенный в папках /etc/cron.daily, /etc/cron.weekly и т. д. Если нет вывода, ваш cron не работает должным образом. Попробуйте перезапустить его с помощью

sudo /etc/init.d/cron restart

и проверить содержимое /var/log/syslog на наличие сообщений об ошибках и снова перейти к шагу 1


Если cron работает правильно, перейдите к проверке почтовый ящик пользователя, который имеет эту команду в своем crontab. Замените ИМЯ ПОЛЬЗОВАТЕЛЯ.

sudo -u USERNAME mail

или sudo -u USERNAME less / var / mail / USERNAME

Если выполнить команду cron не удается, она должна отправить туда электронное письмо.


Вы должны использовать /usr/bin/env php /path/to/script.php в качестве команды вместо просто php. /usr/bin/env автоматически выбирает правильный php двоичный файл.


Для аргументов нет, вы должны читать аргументы отдельно. Это не по теме для этого сайта, но посмотрите на эту страницу руководства . Вы можете прочитать эти аргументы из $argv. Он не работает так же, как со скриптами, вызываемыми через веб-сервер.

0
ответ дан 6 February 2014 в 12:58

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

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