Некоторое время назад я настроил задание cron для запуска скрипта каждую минуту. С тех пор я обновил систему с ubuntu intrepid до ubuntu karmic. Теперь работа терпит неудачу. Я получаю электронное письмо об этом раз в минуту.
Нет проблем, правда? Я могу просто решить проблему и продолжить свой путь. Ну, ладно, но у меня сейчас нет на это времени, поэтому я просто хочу закрыть работу, пока не дойду до нее.
Хорошо, вот где это становится странным. Я не могу найти работу cron. Его нет в crontab (в / var / spool / cron) для пользователя (или любого другого пользователя). Его нет в / etc / crontab. Его нет в /etc/cron.d. Я рекурсивно выделил / etc / и / var / для имени сценария. Не могу найти.
Я запустил lsof на pid cron, чтобы увидеть, есть ли у него какое-нибудь странное место, которое я не знаю, open, нет.
Что мне здесь не хватает? Работа выполняется. Он запускается cron (электронная почта приходит от cron - я вижу это в системных журналах, запущенных под cron), но, похоже, нигде не существует.
В моей системе Debian / var / журнал / системный журнал содержит запись для каждого выполняемого задания cron…
Jan 17 20:10:01 machine1 /USR/SBIN/CRON[1545]: (convict) CMD (fetchmail -s >/dev/null 2>&1)
Jan 17 20:17:01 machine1 /USR/SBIN/CRON[1800]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jan 17 20:20:01 machine1 /USR/SBIN/CRON[1914]: (convict) CMD (fetchmail -s >/dev/null 2>&1)
Если ваша работа выполняется cron, вы должны найти ссылку на нее в / var / журнал / системный журнал.
У меня есть кое-что, что может вам помочь.
Чтобы увидеть задания cron в системе, попробуйте следующее:
crontab -l
Вот что я получаю (поскольку мне нужно запустить только одну настройку задания):
#CrInfo osascript -e "tell application "iTunes" to updateAllPodcasts"
30 2 * * * osascript -e "tell application "iTunes" to updateAllPodcasts"
Это перечислит задания, которые будут запускаться по расписанию.
Чтобы перечислить все запущенные процессы в системе и их полные пути к файловой системе, введите:
ps -xa
Вы получите примерно такой вывод: (что должно упростить понимание, где удалить скрипт, запускающий вашу электронную почту)
4968 ?? 0:03.24 /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal -psn_0_655520
6112 ?? 0:23.31 /Applications/QuickTime Player.app/Contents/MacOS/QuickTime Player -psn_0_712878
7203 ?? 4:33.38 /Applications/Transmit.app/Contents/MacOS/Transmit -psn_0_946407
7240 ?? 2:56.99 /Applications/Google Chrome.app/Contents/MacOS/Google Chrome -psn_0_975086
7358 ?? 0:00.02 /System/Library/PrivateFrameworks/KerberosHelper.framework/Resources/LKDCHelper
7369 ?? 0:04.72 /usr/sbin/AppleFileServer
Также есть страница на сайте IBM, который может помочь вам в правильном использовании Cron.
Тем не менее, если ваша работа не отображается в cron, вы уверены, что не запускаете ее с каким-то другим инструментом, о котором вы забыли? Некоторое кастомное приложение deamon, которое вы, возможно, скачали, например?
Я знаю, что ему 5 лет, но для тех, кто сталкивается с такой же проблемой (как и у меня), вот мое решение:
Я проверил crontab каждого пользователя с помощью sudo crontab -e -u username, где «username» должно быть существующим именем пользователя, таким как «www-data» (что было виновником в моем случае).
Надеюсь, это кому-то поможет.
Это может быть в /etc/cron.daily
(Я предполагаю, что он работает как root
). Эти вакансии не отображаются в crontab -l
но все равно казнили.
Наткнулся на нечто подобное, работая над Raspberry Pi, и я узнал, что есть большая разница между:
crontab -e
и
sudo crontab -e
попробуйте проверить позже, даже если вы думаете, что уже находитесь в сеансе повышенного уровня.
когда вы знаете pid, взгляните на /proc/<pid>
, возможно, вы получите там полезную информацию.