Доброго времени суток!
Много тем про cron, но свой случай я не нашел.системный cron не выполняет задания (заметил не так давно, причину прекращения работы не нашел).
Итак:
Система: Fedora Core 6
crond запущен
# /etc/init.d/crond status
crond (pid 23031) выполняется...# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
#все стандартно
в логе только
Jan 21 11:39:29 email crond[23031]: (CRON) STARTUP (V5.0)
и потом после строчки старта долго ничего нет...
после редактирования (добавлял задание для проверки, потом убрал) пишет
Jan 21 11:11:01 email crond[32295]: (*system*) RELOAD (/etc/crontab)и все... никаких команд CMD в логах нет,
пробовал переписывать файл полностью с нуля, копировал с заведомо рабочей машины, где крон работает, ремил все команды кроме добваленной тестовой строки (*/1 * * * * root /bin/echo test) - без изменений.Судя по RELOAD конфигурацию он считывает, но не выполняет и не ругается :(
kill -HUP pid и /etc.init.d/crond restart после редактирования делал - не помогает.Права в порядке, перевод после последней строки есть...
# ls -l /etc/crontab
-rw-r--r-- 1 root root 255 Янв 21 11:37 /etc/crontab/etc/cron.allow отсутствует
/etc/cron.deny пустой
-rw-r--r-- 1 root root 0 Янв 11 09:54 /etc/cron.denyкоманды вроде crontab -l относятся к пользователю root, но не к системному crontab.
как посмотреть задания системного crontab?
ХЕЕЕЕЛП ПЛИЗ!
выполни
crontab -u root /etc/crontabи проверь добавились ли правила crontab -l
>выполни
>crontab -u root /etc/crontab
>
>и проверь добавились ли правила crontab -l"-u root" можно не указывать если под рутом работаешь
т.е. crontab /etc/crontab и все. Сделал.
crontab -l листинг выводит:SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
Но вот что меня смущает, на такой же машине, с такой же Fedora Core 6 где крон замечательно пашет "crontab -l" говорит "no crontab for root"
и все run-parts выполняются как и положено.
>команды вроде crontab -l относятся к пользователю root, но не к системному
>crontab.
>как посмотреть задания системного crontab?Это вам не винда, нет всемогущего пользователя system. Из вашего поста непонятно что и куда вы добавляли и какой результат хотели получить. Понятное дело, что могу порекомендовать вдумчивое чтение манов, но может просто подробно опишете задачу и свои действия?
>>команды вроде crontab -l относятся к пользователю root, но не к системному
>>crontab.
>>как посмотреть задания системного crontab?
>
>Это вам не винда, нет всемогущего пользователя system. Из вашего поста непонятно
>что и куда вы добавляли и какой результат хотели получить. Понятное
>дело, что могу порекомендовать вдумчивое чтение манов, но может просто подробно
>опишете задачу и свои действия?Добавлял я задания для диагностики, проверки работы крона. Почему при стандартном /etc/crontab задания перестали выполнятся совершенно не понятно :( А задача простая - восстановить выполнение задач по прасписанию.
Вот к примеру по совету sergey.shkolin я выполняю "crontab /etc/crontab"
Но сначала добавил строчку для диагностики (с переводом в конце)*/1 * * * * root /bin/echo test
в логе
(root) REPLACE (root)
(root) LIST (root)
(*system*) RELOAD (/etc/crontab)сделал kill -HUP cron_pid
жду...
никакого эффекта :(
проверь к примеру файлы в папке /etc/cron.daily, права должны быть на исполнение сделай chmod +x /etc/cron.daily/*
>проверь к примеру файлы в папке /etc/cron.daily, права должны быть на исполнение
>сделай chmod +x /etc/cron.daily/*Во всех 4х папках /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly
все скрипты исполняемые.# ls -l /etc/cron*
-rw-r--r-- 1 root root 0 Янв 11 09:54 /etc/cron.deny
-rw-r--r-- 1 root root 275 Янв 23 10:19 /etc/crontab
-rw-r--r-- 1 root root 345 Янв 15 09:29 /etc/crontab.bak/etc/cron.d:
итого 8
-rw------- 1 root root 273 Янв 14 13:29 sa-update
-rw-r--r-- 1 root root 188 Авг 20 14:38 sysstat/etc/cron.daily:
итого 52
-rwxr-xr-x 1 root root 379 Окт 30 2006 0anacron
lrwxrwxrwx 1 root root 39 Мар 7 2007 0logwatch -> /usr/share/logwatch/scripts/logwatch.pl
-rwxrw-r-x 1 root root 118 Окт 5 2006 cups
-rwxr-xr-x 1 root root 418 Июл 13 2006 makewhatis.cron
-rwxr-xr-x 1 root root 137 Июл 13 2006 mlocate.cron
-rwxr-xr-x 1 root root 2181 Июн 21 2006 prelink
-rwxr-xr-x 1 root root 114 Сен 7 2006 rpm
lrwxrwxrwx 1 root root 19 Янв 18 17:47 spamreport -> /scripts/spamreport
lrwxrwxrwx 1 root root 30 Янв 18 17:48 tempdelete.pl -> /etc/webmin/cron/tempdelete.pl
-rwxr-xr-x 1 root root 290 Июл 13 2006 tmpwatch/etc/cron.hourly:
итого 4
-rwxr-xr-x 1 root root 27 Янв 22 14:57 test/etc/cron.monthly:
итого 12
-rwxr-xr-x 1 root root 381 Окт 30 2006 0anacron
-rwxr-xr-x 1 root root 181 Дек 29 2006 insure_arch/etc/cron.weekly:
итого 24
-rwxr-xr-x 1 root root 380 Окт 30 2006 0anacron
lrwxrwxrwx 1 root root 22 Июн 15 2007 backup_config -> /scripts/backup_config
-rwxr-xr-x 1 root root 180 Фев 8 2007 logrotate
-rwxr-xr-x 1 root root 414 Июл 13 2006 makewhatis.cron
-rwxr-xr-x 1 root root 101 Дек 29 2006 rkhunter
Но как я писал выше, я ремил все эти run-parts и вписывал тестовую строчку и все равно не выполняется...
Вот к примеру попробовал поменять доступ (+х) на файлы в папке /etc/cron.d sysstat и sa-update и в логах ругань появиласьJan 23 14:02:25 email crond[3320]: (*system*) BAD FILE MODE (/etc/cron.d/sysstat)
Jan 23 14:02:25 email crond[3320]: (*system*) BAD FILE MODE (/etc/cron.d/sa-update)Т.е. на ошибки то он реагирует, а вот почему задания не выполняет не понятно...
Вопрос всем, а можно дебаг включить для крона?
Проверь правильное ли системное время, далее рестартани cron.
>Проверь правильное ли системное время, далее рестартани cron.время синхронизируется по ntp
Други! Есть ли у кого еще умные мысли???
Почему он читает каждый раз конфигурацию после изменения, ни на что не ругается (хотя если специально где поменять права или что еще, то ругается) и при этом игнорирует любые команды в /etc/crontab ?По совету sergey.shkolin и angra выполнил crontab /etc/crontab
Ну создался файлик /var/spool/cron/root с правами
-rw------- 1 root root 289 Янв 22 09:05 root
и содержимим идентичным /etc/crontab так он тоже игнорируется!
Я вообще-то советовал читать man, а не делать все, что было сделано в этом топике. У меня создалось впечатление, что вы тестите его при помощи /usr/bin/echo test, скажите а что вы хотите увидеть в результате этого теста?
>Я вообще-то советовал читать man, а не делать все, что было сделано
>в этом топике. У меня создалось впечатление, что вы тестите его
>при помощи /usr/bin/echo test, скажите а что вы хотите увидеть в
>результате этого теста?строчку в логе crond[13274]: (root) CMD (/usr/bin/echo test)
это будет значить, что он ее выполнил.Я тут запустил crond с командной строчки в режиме debug
/usr/sbin/crond -x ext,sch,proc,pars,load,misc>/root/cron.debug
Много инфы туда свалилось, переменные читаются видно сразу, а вот что с расписанием не совсем понятно... вот к примеру частьuser [root:0:0:...] cmd="/bin/echo test"
user [root:0:0:...] cmd="run-parts /etc/cron.monthly"
user [root:0:0:...] cmd="run-parts /etc/cron.weekly"
user [root:0:0:...] cmd="run-parts /etc/cron.daily"
user [root:0:0:...] cmd="run-parts /etc/cron.hourly"
[27088] do_command(/bin/echo test, (*system*,0,0))
[27088] main process returning to work
[27088] sigchld...pid #27377 died, stat=0
[27088] sigchld...no children
[27088] Target time=1201597560, sec-to-wait=60Вроде он как пытается ее выполнить, но в логе пусто...
Тут я снова подредактировал /etc/crontab (вставил решетку, просто чтобы конфиг перечитался)[27088] load_database()
*system*: [delete old data]load_user()
linenum=11
load_env, read <SHELL=/bin/bash>
load_env, <SHELL> </bin/bash> -> <SHELL=/bin/bash>
linenum=12
load_env, read <PATH=/sbin:/bin:/usr/sbin:/usr/bin>
load_env, <PATH> </sbin:/bin:/usr/sbin:/usr/bin> -> <PATH=/sbin:/bin:/usr/sbin:/usr/bin>
linenum=13
load_env, read <MAILTO=root>
load_env, <MAILTO> <root> -> <MAILTO=root>
linenum=14
load_env, read <HOME=/>
load_env, <HOME> </> -> <HOME=/>
linenum=15
linenum=16
load_env, read <01 * * * * root run-parts /etc/cron.hourly>
load_env, not an env var, state = 7
linenum=14
load_entry()...about to eat comments
cron использует syslog и куда будут писаться сообщения и какие именно зависит от настроек syslog, не исключен вариант, что они просто отбрасываются или попадают в другой файл. Если хотите проверить что он выполняет команды используйте что-либо оставляющее видимые результаты, например touch. Кстати рестартовать cron после изменений /etc/crontab или /etc/cron.d/ не надо, он сам с этим прекрасно справляется, что опять таки указано в мане.
>cron использует syslog и куда будут писаться сообщения и какие именно зависит
>от настроек syslog, не исключен вариант, что они просто отбрасываются или
>попадают в другой файл. Если хотите проверить что он выполняет
>команды используйте что-либо оставляющее видимые результаты, например touch. Кстати рестартовать cron
>после изменений /etc/crontab или /etc/cron.d/ не надо, он сам с этим
>прекрасно справляется, что опять таки указано в мане.Согласен, я попробовал перенаправить на мыло, но без результатов, попробую touch.
А перезапускал в основном еще и чтобы посмотреть что в лог хоть что то пишется.
Про логи: дефолтовый файл /var/log/messages там от крона тоже ничего нет...
Из syslog
# Log cron stuff
cron.* /var/log/cron
В данный лог должно валиться все от крона!Думаю надо теперь двигаться в сторону анализа debug вывода...
У меня возникала аналогичная проблема после загона сервера в домен Win2003
Оказалось, что я неправильно составил файлик /etc/security/access.conf
Я там запретил локальный вход всем кроме определенной группы пользователей,
в которую (root) не входит.
>У меня возникала аналогичная проблема после загона сервера в домен Win2003
>Оказалось, что я неправильно составил файлик /etc/security/access.conf
>Я там запретил локальный вход всем кроме определенной группы пользователей,
>в которую (root) не входит.Жаль проверить уже не могу, переустановил все - помогло :))
>>У меня возникала аналогичная проблема после загона сервера в домен Win2003
>>Оказалось, что я неправильно составил файлик /etc/security/access.conf
>>Я там запретил локальный вход всем кроме определенной группы пользователей,
>>в которую (root) не входит.
>
>Жаль проверить уже не могу, переустановил все - помогло :))Аналогично долго не мог понять почему не выполняются команды добавленные в /etc/crontab, позднее создавал файлик в /etc/cron.d/, записывал туда команды - не выполнялось. При углублении в проблемму обнаружил что в логи валится "BAD FILE MODE". На эту тему нашел небольшую но содержательную инструкцию (http://slackrw.wordpress.com/2006/08/09/of-cron-and-permissions/):
/etc/crontab ——- 644
/etc/cron.d ——– 754
/etc/cron.d/* —— 644
/etc/cron.*ly ——- 750
/etc/cron.*ly/*—– 500Т.е. в /etc/cron.d/ скрипты не писать, а только файлы крона. Ошибка валиться в лог перестала, но команды не выполнялись, хотя очень похожие кроновые файлы лежали рядом в этой-же директории и выполнялись. Внимательно прочитав тред обратил внимание на пустую строку в конце крон-файла с моей командой. Добавил и все заработало. Т.е. тот крон файл где нет пустой строки в конце файла (или в /etc/cron.d/ или в /etc/crontab - не важно где вобщем) последнюю команду выполнять не будет.
Я нашел почему у меня kоманды в crontab -e -u root исполнялись,но выводили по логам, но ничего не выполняли)))) ребят,советую при проблемах сходить в туалет и поразмыслить))))) просто в /etc/crontab есть у вас переменная SHELL and PATH а я у себя еще и в crontab -e вписал эти переменным и еще их добавил своими путями) в итоге просто выкинул их от туда и оставил только в /etc/crontab и все!!!!!!)))))))))))))))))))0