Cron живет своей жизнью [Solved]
Привет всем.
Подскажите плз, что тут творится..
У меня есть скриптик, который проверяет наличие подключения по ppp, и в случае его отсутствия при проверке, переподключается. Скрипт запускается раз в пять минут по крону.
Изначально сам скрипт лежал в /etc/cron.minutely, а в /etc/crontab была такая запись -
*/5 * * * * root /etc/cron.minutely/ppp0_check.sh
все нормально работало.
потом я из эстетических побуждений переложил скрипт в каталог /etc/cron.fiveminutely, и заменил строчку в кронтабе на
*/5 * * * * root /etc/cron.fiveminutely/ppp0_check.sh
и стало что-то странное -
после этого скрпит стал запускаться ежеминутно, в /var/log/messages каждую минуту такие строки -
Jul 10 13:03:01 Heffalump cron[1380]: (root) CMD (/etc/cron.minutely/ppp0_check.sh})
Jul 10 13:04:01 Heffalump cron[1384]: (root) CMD (/etc/cron.minutely/ppp0_check.sh})
и т.д.
при этом ежепятиминутно он тоже стартует (что я собственно и ожидаю) -
Jul 10 13:00:01 Heffalump cron[1350]: (root) CMD (/etc/cron.fiveminutely/ppp0_check.sh)
Jul 10 13:05:01 Heffalump cron[1388]: (root) CMD (/etc/cron.fiveminutely/ppp0_check.sh)
вопрос - как так крон запускает этот скрипт из /cron.minutely, при том что самого такого каталога в принципе не существует, я его потер со всем содержимым ради чистоты эксперимента. да еще и ежеминутно, да еще и при отсутствии такой записи в crontab-е?
похоже я в этой жизни чего-то не понимаю
- Для комментирования войдите или зарегистрируйтесь
Перезапусти cron
После перезапука cron тоже самое? Если да, тогда действительно проблемы (типа два cron). Иначе cron просто умудрился сохранить старую запись в памяти (из-за частоты вызова скрипта). И стертые файлы тоже сохранились по сей же причине (в выводе ls их нет, но сами они постоянно открыты cron-ном и посему не удаляются реально)
да, после
да, после перезапуска то же самое. система перезагружалась многократно..
крон как будто в единственном экземпляре запущен -
Heffalump root # ps aux|grep cron
root 25596 0.0 0.1 1736 676 ? Ss Jul09 0:00 cron start
root 1929 0.0 0.1 1520 464 pts/1 S+ 13:59 0:00 grep cron
Чудес не бывает...
Если система перегружалась, то для успешного запуска скрипта он должен присутствовать. Так что скрипт из одноминутного каталога не может успешно выполняться как минимум.
Может быть
Может быть сохранились автобекапы от файлов (типа *~)...
мда. похоже, чудеса бывают
похоже бывают чудеса, бывают. скрипт "ppp0_check" на машинке существует в единственном экземпляре -
Heffalump root # locate ppp0_check.sh
/etc/cron.fiveminutely/ppp0_check.sh
Heffalump root # find / -iname 'ppp0_check.sh'
/etc/cron.fiveminutely/ppp0_check.sh
база locate свежая - обновлялась сегодня
а в messages продолжают валиться отчеты от крона -
Jul 10 16:02:01 Heffalump cron[2851]: (root) CMD (/etc/cron.minutely/ppp0_check.sh})
Jul 10 16:03:01 Heffalump cron[2855]: (root) CMD (/etc/cron.minutely/ppp0_check.sh})
Jul 10 16:04:01 Heffalump cron[2859]: (root) CMD (/etc/cron.minutely/ppp0_check.sh})
Jul 10 16:05:01 Heffalump cron[2863]: (root) CMD (/etc/cron.fiveminutely/ppp0_check.sh)
Jul 10 16:05:01 Heffalump cron[2865]: (root) CMD (/etc/cron.minutely/ppp0_check.sh})
Jul 10 16:06:01 Heffalump cron[2871]: (root) CMD (/etc/cron.minutely/ppp0_check.sh})
Jul 10 16:07:01 Heffalump cron[2875]: (root) CMD (/etc/cron.minutely/ppp0_check.sh})
Jul 10 16:08:01 Heffalump cron[2879]: (root) CMD (/etc/cron.minutely/ppp0_check.sh})
Jul 10 16:09:01 Heffalump cron[2883]: (root) CMD (/etc/cron.minutely/ppp0_check.sh})
каталога /etc/cron.minutely не существует -
Heffalump root # ls -a /etc/cron*
/etc/cron.deny /etc/crontab
/etc/cron.d:
. .. .keep
/etc/cron.daily:
. .. .keep logrotate.cron slocate
/etc/cron.fiveminutely:
. .. .keep ppp0_check.sh tmp_
/etc/cron.hourly:
. .. .keep
/etc/cron.monthly:
. .. .keep
/etc/cron.weekly:
. .. .keep makewhatis
и автобэкапов тоже -
Heffalump root # ls -a /etc/~*
ls: /etc/~*: No such file or directory
эээхх..
Все же чудес не бывает
Бывает некоторое непонимание... Как я говорил, очень долго похожим образом боролся с xen-скриптом на python. Я его (этот скрипт) даже удалил. Но все продолжало работать. Ибо был запущен демон, который засосал при запуске этот файл и больше внимания на него (на его отсутствие) не обращал. Но в моем случае перезагрузка помогала.
Здесь можно посоветовать создать /etc/cron.minutely/ppp0_check.sh с выводом простеньким во временный файл и посмотреть, будет ли он на самом деле выполняться. Вполне возможно, что или создать старый файл не удасться, или выполняться он все же не будет (смотрим содержимое временного файла).
В общем, терпение.
:)
сделал как вы советовали..
mkdir /etc/cron.minutely
touch /etc/cron.minutely/ppp0_check.sh
echo "date >> /etc/cron.minutely/tempfile" > ppp0_check.sh
touch /etc/cron.minutely/tempfile
потом скрипт на запуск для всех, и tempfile на запись для всех.
tail -f tempfile
сижу, жду..
tail -f /var/log/messages потихоньку выплевывает строчки -
Jul 11 11:20:01 Heffalump cron[14570]: (root) CMD (/etc/cron.minutely/ppp0_check.sh})
Jul 11 11:21:01 Heffalump cron[14586]: (root) CMD (/etc/cron.minutely/ppp0_check.sh})
Jul 11 11:22:01 Heffalump cron[14594]: (root) CMD (/etc/cron.minutely/ppp0_check.sh})
Jul 11 11:23:01 Heffalump cron[14600]: (root) CMD (/etc/cron.minutely/ppp0_check.sh})
Jul 11 11:24:01 Heffalump cron[14604]: (root) CMD (/etc/cron.minutely/ppp0_check.sh})
Jul 11 11:25:01 Heffalump cron[14608]: (root) CMD (/etc/cron.fiveminutely/ppp0_check.sh)
Jul 11 11:25:01 Heffalump cron[14610]: (root) CMD (/etc/cron.minutely/ppp0_check.sh})
и т.д.
а tempfile как был пустой, так и остался пустой.
стало быть ничего он на самом деле не запускает, а только делает вид что запускает, и гадит в логах
все так плохо? (:
Неужели ни у кого нет мыслей, что это может быть? :)
После того, как сделал заново скриптик из предыдущего поста, уехал на несколько дней отдыхать.
Сегодня по приезду обнаружил, что содержимое messages эволюционировало - теперь каждую минуту после запуска /etc/cron.minutely/ppp0_check.sh, выскакивает еще непонятная ошибка tty1: input overrun. Какое-то переполнение ввода, ничего не пойму.
Скрпит, который лежал в /etc/cron.minutely - так ни разу и не стартанул, tempfile остался нулевым.
Jul 14 18:18:01 Heffalump cron[4257]: (root) CMD (/etc/cron.minutely/ppp0_check.sh})
Jul 14 18:18:55 Heffalump agetty[4237]: tty1: input overrun
при этом cron каждую минуту пишет мне вот такие... письма -
/etc/cron.minutely/ppp0_check.sh}N.X-Cron-EnvN.X-Cron-Env: N X-Cron-Env: N.X-Cron-Env: N.X-Cron-Env: N.
CronDaemonS.rootM.N.From: root (Cron Daemon)N.To: rootN@Subject: Cron
:
NE/bin/sh: /etc/cron.minutely/ppp0_check.sh}: No such file or directoryX.R.rootE.
что за чертовщина творится..
Ура, товарищи. чертов глюк побежден.
Проблема решилась честно сказать, случайно.
Наткнулся на каталог /var/spool/cron. А в нем - загадочный подкаталог с говорящим названием crontabs.
а в этом crontabs-е, конфиг типа кронтаб под названием root.
и в нем, в этом /var/spool/cron/crontab/root - и жила строчка, запускающая несуществующий скрипт.