Это действительно работа cron или вы используете launchd. Cron устарела в OS X.
jaberg,
1
Вы установили файл журнала для задания cron?
daviesgeek
это на самом деле cronработа, с которой я ее настроил, cron -eи я вижу ее, cron -lи я уверен, что она долго работала на Льве, а до этого - на снежном барсе.
Али
и нет, я не устанавливаю вручную файл журнала для самого cron, хотя я пишу в файл журнала внутри задания, и он недавно перестал работать после того, как я что-то изменил.
Али
2
Али, так как у вас есть ответ, пожалуйста, опубликуйте его как ответ и примите его. Не редактируйте это в вопросе. Вам не только разрешено, но и предлагается ответить на свой вопрос.
Джейсон Салаз
Ответы:
30
По умолчанию cron не регистрирует вывод выполненных заданий. Можно зарегистрировать тот факт, что cronjobs были выполнены, но это не значение по умолчанию в OS X.
Чтобы изучить вывод выполнения cronjob, я предлагаю изменить строку cronjob, чтобы перенаправить STDOUT и STDERR в файлы журналов. В вашем файле crontab или после запуска crontab -e, однако, вы можете добавить что-то вроде следующего в вашу строку работы:
В этом случае STDOUT (обычно выводимый на печать или выводимый эхом вывод в STDOUT) отправляется в текстовый файл с именем stdout.log в каталоге / tmp, а STDERR - в stderr.log во временном каталоге. Многие утилиты используют STDERR для вывода специальных сообщений об ошибках, когда они являются ошибками приложения, а не ошибок, вызванных фактическим выполнением программы. (Вы можете прочитать больше о STDERR в Википедии.)
Спасибо, это именно то, что я пытался сделать, похоже, что cronпо какой-то причине не удается запустить работу в первую очередь. если я сам запускаю задание, набирая команду в терминале, который она запускает и выводит в файл журнала, но если я жду, пока cronона не запустится, ничего не произойдет, по крайней мере, никаких изменений в файле журнала, я подумала, может быть, "файл журнала cron "или в консоле были какие-то следы, которые могли бы помочь мне выяснить, что происходит, недавно я сменил оболочку с bash на zsh, но я не думаю, что это могло повлиять и на это.
Али
1
Согласно erikslab.com/2011/02/04/logging-with-launchd , вы можете изменить cron plist ( /System/Library/LaunchDaemons/com.vix.cron.plist) с помощью пути Stdout / Stderr для отладки самого cron. Я не помню, достаточно ли использовать launchctl unloadи launchctl loadсоставлять plist или, поскольку это системный демон, если вам придется полностью перезагружаться. Я бы предложил последнее просто для уверенности.
Джейсон Салаз
21
Гораздо проще просто добавить следующее /etc/syslog.conf:
Мне нравится эта идея - но в 10.10.5 мой /etc/syslog.confговорит # Note that flat file logs are now configured in /etc/asl.conf. Этот файл имеет другой синтаксис, мне не понятно, как настроить вход в него.
Кен Уильямс
@KenWilliams, даже если это говорит о том, что syslog.conf все еще работает на High Sierra.
Fish Monitor
15
По умолчанию «ведение журнала» не включено. Но вы можете получить некоторую полезную информацию, запустив mailкоманду.
TL; DR по mailкоманде: нажмите ввод, чтобы прочитать сообщения, а затем qи введите, чтобы выйти.
Это сообщение об ошибке хранится в почтовом ящикеuser
nohillside
@patrix, я также смог найти успешную работу. Обновил ответ.
Vineeth
Ницца! Должен быть принятый ответ!
Троллхорн
3
Оказалось, когда cron запускает задание (как я), а /usr/local/binне в PATH.
Я нашел это методом проб и ошибок и построил работу с нуля из простых вещей, которые, как я знал, будут работать, и постепенно добавлял вещи, пока не обнаружил проблему.
О других предложениях и ответах:
По какой-то причине (по крайней мере, на моей машине, на которой работает Lion, обновленный с SnowLeopard) cron, не используются параметры, указанные в plist-файлах, которые, launchdкак предполагается, читаются, /System/Library/LaunchDaemons/com.vix.cron.plistили, возможно, cron на Lion ничего не пишет в стандартный вывод или стандартный вывод.
Кстати, я использую http://s3tools.org/s3cmd в syncпапку с корзиной Amazon S3 в качестве резервной копии (как примитивный DropBox).
cron
работа, с которой я ее настроил,cron -e
и я вижу ее,cron -l
и я уверен, что она долго работала на Льве, а до этого - на снежном барсе.Ответы:
По умолчанию cron не регистрирует вывод выполненных заданий. Можно зарегистрировать тот факт, что cronjobs были выполнены, но это не значение по умолчанию в OS X.
Чтобы изучить вывод выполнения cronjob, я предлагаю изменить строку cronjob, чтобы перенаправить STDOUT и STDERR в файлы журналов. В вашем файле crontab или после запуска
crontab -e
, однако, вы можете добавить что-то вроде следующего в вашу строку работы:0 0 * * * yourcommand >/tmp/stdout.log 2>/tmp/stderr.log
В этом случае STDOUT (обычно выводимый на печать или выводимый эхом вывод в STDOUT) отправляется в текстовый файл с именем stdout.log в каталоге / tmp, а STDERR - в stderr.log во временном каталоге. Многие утилиты используют STDERR для вывода специальных сообщений об ошибках, когда они являются ошибками приложения, а не ошибок, вызванных фактическим выполнением программы. (Вы можете прочитать больше о STDERR в Википедии.)
источник
cron
по какой-то причине не удается запустить работу в первую очередь. если я сам запускаю задание, набирая команду в терминале, который она запускает и выводит в файл журнала, но если я жду, покаcron
она не запустится, ничего не произойдет, по крайней мере, никаких изменений в файле журнала, я подумала, может быть, "файл журнала cron "или в консоле были какие-то следы, которые могли бы помочь мне выяснить, что происходит, недавно я сменил оболочку с bash на zsh, но я не думаю, что это могло повлиять и на это./System/Library/LaunchDaemons/com.vix.cron.plist
) с помощью пути Stdout / Stderr для отладки самого cron. Я не помню, достаточно ли использоватьlaunchctl unload
иlaunchctl load
составлять plist или, поскольку это системный демон, если вам придется полностью перезагружаться. Я бы предложил последнее просто для уверенности.Гораздо проще просто добавить следующее
/etc/syslog.conf
:Затем перезапустите системный журнал
Протестировано и работает на OSX 10.7.4
источник
/etc/syslog.conf
говорит# Note that flat file logs are now configured in /etc/asl.conf
. Этот файл имеет другой синтаксис, мне не понятно, как настроить вход в него.По умолчанию «ведение журнала» не включено. Но вы можете получить некоторую полезную информацию, запустив
mail
команду.TL; DR по
mail
команде: нажмите ввод, чтобы прочитать сообщения, а затемq
и введите, чтобы выйти.источник
Я смог найти вход в cron-job,
Ниже приводится журнал заданий cron, который я получил за выполнение команды CLI AWS.
источник
user
Оказалось, когда cron запускает задание (как я), а
/usr/local/bin
не вPATH
.Я нашел это методом проб и ошибок и построил работу с нуля из простых вещей, которые, как я знал, будут работать, и постепенно добавлял вещи, пока не обнаружил проблему.
О других предложениях и ответах:
По какой-то причине (по крайней мере, на моей машине, на которой работает Lion, обновленный с SnowLeopard)
cron
, не используются параметры, указанные в plist-файлах, которые,launchd
как предполагается, читаются,/System/Library/LaunchDaemons/com.vix.cron.plist
или, возможно, cron на Lion ничего не пишет в стандартный вывод или стандартный вывод.Кстати, я использую http://s3tools.org/s3cmd в
sync
папку с корзиной Amazon S3 в качестве резервной копии (как примитивный DropBox).источник