PDA

Показать полную графическую версию : cron - запуск php скрипта


amohax
28-04-2013, 18:08
Всем привет! Помогите настроить задание крон для запуски пхп скрипта каждые 10 мин.

Сам делаю так:

1. Подключаюсь к серверу через SSH
2. Ввожу команду crontab -e
3. Пишу в начале файла:
*/10 * * * * /usr/local/bin/php -q /home/amohax/www/site1/public_html/wotevent/t.php > /dev/null 2>&1
4. Сохраняю
5. Ставлю через FAR на файл t.php атрибуты ххх ххх ххх т.е. полный доступ
6. жду 10 мин.


= ничего не выполняется :(

При этом если в командную строку написать:
/usr/local/bin/php -q /home/amohax/www/site1/public_html/wotevent/t.php
то скрипт срабатывает нормально!

Подскажите в чем может быть дело?

AMDBulldozer
28-04-2013, 18:15
Ввожу команду crontab -e »

Просто отредактируйте /etc/crontab, добавив строчку: "10 * * * * ..." (безо всякого "*/" в начале). Не забудьте перезапустить сервис cron или послать ему сигнал -HUP, чтобы он перечитал файл конфигурации (Вы можете сколько угодно править /etc/crontab, но уже запущенная копия демона об этом не знает).

amohax
28-04-2013, 18:58
Просто отредактируйте /etc/crontab, добавив строчку: "10 * * * * ..." (безо всякого "*/" в начале) »
Разве это не значит выполнение задания на 10-й минуте каждого часа?

Не забудьте перезапустить сервис cron »
Пишет что у меня нет на это прав

А в начале файла надо писать что-то типа: "SHELL=/bin/sh/"?

AMDBulldozer
28-04-2013, 19:08
Разве это не значит выполнение задания на 10-й минуте каждого часа? »
Да, извиняюсь, невнимательно прочитал вопрос (даже хуже - я, сам не пойму с чего, решил, что "выполнять каждые 10 минут" и "выполнять в 10 минут каждого часа" - это одно и то же :blush2:).
Пишет что у меня нет на это прав »
Так Вы не суперпользователем по ssh заходите? "sudo" в этой ситуации Вам не поможет (зависит от содержания файла /etc/sudoers)? Пароль суперпользователя не знаете (чтобы "su -" выполнить)?

Чтобы изменения вступили в силу, необходимо либо перезапустить cron, либо заставить его заново прочитать /etc/crontab.
Если возможности получить права на выполнение этих действий нет, можно ли перезагрузить сервер? (я сам знаю, что это варварское решение)
А в начале файла надо писать что-то типа: "SHELL=/bin/sh/" »
Вообще говоря, эта строчка там уже должна быть.

P.S. Добавил в свой /etc/crontab строчку "*/1 * * * * root /bin/echo `date` > /tmp/test". После посылки сигнала "killall -1 cron" строчка начала выполняться и исправно обновлять файл /tmp/test.

amohax
28-04-2013, 19:19
Перезапустить не могу и перегрузить машину тоже и прав рута нет - я просто пользователь обычного хостинга.

Судя по логам крон видит что файлы обновились

Apr 28 19:06:56 dune crontab[55533]: (amohax) LIST (amohax)
Apr 28 19:13:09 dune crontab[56428]: (amohax) BEGIN EDIT (amohax)
Apr 28 19:13:42 dune crontab[56428]: (amohax) REPLACE (amohax)
Apr 28 19:13:42 dune crontab[56428]: (amohax) END EDIT (amohax)
Apr 28 19:14:00 dune /usr/sbin/cron[5720]: (amohax) RELOAD (tabs/amohax)

AMDBulldozer
28-04-2013, 19:34
Тогда Вы правы, единственный выход - "crontab -e". Не забудьте записать первой строчкой файла "SHELL=/bin/sh" и, если не будете указывать второй строчкой PATH, то пишите все команды с абсолютными путями (начиная с корневой директории).

amohax
28-04-2013, 20:01
Оказалось что после строчки задания обязательно должен стоять перевод строки. Иначе задание
игнорируется.

Простите за беспокойство и спасибо за помощь.




© OSzone.net 2001-2012