Почему не работает cron

R
На сайте с 22.06.2007
Offline
174
6205

Добавляю в crontab -e

строку

30 * * * * root /var/www/pp/pp_cron

Если запускать /var/www/pp/pp_cron - скрипт прекрасно отрабатывает.

Вопрос: почему он не работает через cron? Что я делаю не так?

[umka]
На сайте с 25.05.2008
Offline
456
#1

Напишите

30 * * * * root /var/www/pp/pp_cron > /path/to/log_file 2>&1

в этом файлике будет весь вывод, в т.ч. сообщения об ошибках, если они есть.

Также почитайте, что пишут в /var/log/cron

А вообще у меня есть сильные сомнения, что вы правильно редактируете задания.

Пользователь, от которого крон выполняет команду, указывается только в /etc/crontab

А вы запускаете "crontab -e" и таким образом редактируете файл /var/cron/tabs/root (ну или под каким пользователем вы в этот момент работаете)

То есть, в указанный log_file будет писаться что-то вроде "root: command not found" :)

Лог в помощь!
R
На сайте с 22.06.2007
Offline
174
#2

Сделал:

30 * * * * root /var/www/pp/pp_cron > /var/www/pp/log_file 2>&1

Файл log_file не создается вообще. Такое впечатление, что эта команда тупо не выполняется.

В /etc/crontab такое:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

Такого пути /var/cron/tabs/root у меня нет вообще.

В /var/log/cron.log у меня:

May 11 01:05:01 serverserver /USR/SBIN/CRON[3073]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
May 11 01:09:01 server /USR/SBIN/CRON[3113]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -n 200 -r -0 rm)
May 11 01:10:01 server /USR/SBIN/CRON[3133]: (www-data) CMD ([ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh)
May 11 01:12:35 server crontab[3143]: (root) BEGIN EDIT (root)
May 11 01:12:53 server crontab[3143]: (root) REPLACE (root)
May 11 01:12:53 server crontab[3143]: (root) END EDIT (root)
May 11 01:13:01 server /usr/sbin/cron[32346]: (root) RELOAD (crontabs/root)
May 11 01:15:01 server /USR/SBIN/CRON[3161]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
May 11 01:17:01 server /USR/SBIN/CRON[3167]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
May 11 01:18:56 server crontab[3180]: (root) BEGIN EDIT (root)
May 11 01:19:09 server crontab[3180]: (root) END EDIT (root)
May 11 01:20:01 server /USR/SBIN/CRON[3192]: (www-data) CMD ([ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh)

Что это и почему я здесь не вижу чего-нибудь похожего на мою команду я чесно говоря не знаю.

[umka]
На сайте с 25.05.2008
Offline
456
#3

Ну у вас интервал выполнения установлен в 30 минут, а в логе только 15-минутный кусок.

Видимо, не пришло время ещё :)

Reise:
Такого пути /var/cron/tabs/root у меня нет вообще.

Наверное, в вашей системе пользовательские кронтабы хранятся в другом месте.

В любом случае, в /var/log/cron должна появиться запись о запуске вашей команды.

R
На сайте с 22.06.2007
Offline
174
#4
Ну у вас интервал выполнения установлен в 30 минут

Разве? Помоему первое поле отвечает за сек. 0-59, то есть в моем случае каждую минуту на 30 сек.

[umka]
На сайте с 25.05.2008
Offline
456
#5
Reise:
Разве? Помоему первое поле отвечает за сек. 0-59, то есть в моем случае каждую минуту на 30 сек.

man 5 crontab

вряд ли у вас какой-то дикий крон с секундами :)

R
На сайте с 22.06.2007
Offline
174
#6

Вы правы, это минуты.

В /var/log/cron.log появилась запись:

May 11 01:30:01 server /USR/SBIN/CRON[3247]: (root) CMD (root /var/www/pp/pp_cron > /var/www/pp/log_file 2>&1)

ровно на 30 минуте.

Но все равно скрипт не отработал, но в log_file:

/bin/sh: root: command not found

Я понимаю, что об этом вы писали в первом посте, но я чесно говоря не понял. Что это значит?

Reise добавил 11.05.2011 в 03:26

И тогда возникает вопрос, а как же тогда добавиться, что срабатывало раз в минуту например?

[umka]
На сайте с 25.05.2008
Offline
456
#7
Reise:
Вы правы, это минуты.
В /var/log/cron.log появилась запись:
ровно на 30 минуте.

Но все равно скрипт не отработал, но в log_file:

Я понимаю, что об этом вы писали в первом посте, но я чесно говоря не понял. Что это значит?

Reise добавил 11.05.2011 в 03:26
И тогда возникает вопрос, а как же тогда добавиться, что срабатывало раз в минуту например?

Это значит, что не нужно указывать имя пользователя (root), если вы редактируете кронтаб пользователя ("crontab -e").

Если же вы редактируете файл "/etc/crontab", то вы редактируете системный кронтаб, в котором надо указывать пользователей.

Чтобы запускать команду раз в минуту, везде поставьте звёздочки.

Читайте мануал, там всё про это написано :)

P
На сайте с 08.03.2007
Offline
250
#8

если это последняя строка в файле, после неё должен быть перевод строки

R
На сайте с 22.06.2007
Offline
174
#9
[umka:
;8933099]Это значит, что не нужно указывать имя пользователя (root), если вы редактируете кронтаб пользователя ("crontab -e").
Если же вы редактируете файл "/etc/crontab", то вы редактируете системный кронтаб, в котором надо указывать пользователей.

Вы абсолютно правы, неся задание в системный crontab и поправив интервал - все сразу заработало.

[umka:
;8933099]Читайте мануал, там всё про это написано

Я бы с радостью, но там все на английском. Кстати интересуюсь вопросом, нельзя ли как-то русифицировать маны? Английский немного знаю, но не настолько, чтобы быстро сориентироваться и разобраться в проблеме. Например когда меня нужно быстро разобрать ман, гуглю man команда и обычно первый результат этот ман на русском. Нельзя ли в системе так сделать, то есть русифицировать маны. У меня debian 6.

Pilat:
если это последняя строка в файле, после неё должен быть перевод строки

Это было, спасибо.

[umka], большое спасибо за помощь.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий