Назад | Перейти на главную страницу

Откуда запускается это задание cron?

Некоторое время назад я настроил задание 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>, возможно, вы получите там полезную информацию.