Я пытаюсь запускать 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, чтобы увидеть, выполняются они или нет и почему?
Кроме того, это правильный способ отправки аргументов? Должен ли скрипт принимать их иначе, чем веб-скрипт?
Во-первых, проверьте правильность работы вашей команды из командной строки:
/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
. Он не работает так же, как со скриптами, вызываемыми через веб-сервер.