Где находится файл журнала cron в MacOSX Lion?

25

Я хочу устранить неполадки в работе cron, которая работала нормально до недавней модификации, но я не могу найти файл журнала cron, где он находится?

Али
источник
2
Это действительно работа 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, однако, вы можете добавить что-то вроде следующего в вашу строку работы:

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, но я не думаю, что это могло повлиять и на это.
Али
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:

cron.* /var/log/cron.log 

Затем перезапустите системный журнал

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist 
sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist 

Протестировано и работает на OSX 10.7.4

Fraidoon Sarwary
источник
3
Мне нравится эта идея - но в 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и введите, чтобы выйти.

Уильям Энтрикен
источник
4
Очень хорошо, спасибо. Мой показал мне, что с моим Кроном была неизвестная команда. Ура!
Джошуа Пинтер
7

Я смог найти вход в cron-job,

/var/mail/{user-name}

Ниже приводится журнал заданий cron, который я получил за выполнение команды CLI AWS.

From build@BuildServer1.local  Fri Mar  2 10:00:00 2018
Return-Path: <build@BuildServer1.local>
X-Original-To: build
Delivered-To: build@BuildServer1.local
Received: by BuildServer1.local (Postfix, from userid 501)
    id A7A94296CBA3; Fri,  2 Mar 2018 10:00:00 +0100 (CET)
From: build@BuildServer1.local (Cron Daemon)
To: build@BuildServer1.local
Subject: Cron <build@BuildServer1> /app/scripts/s3-sync.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=build>
X-Cron-Env: <USER=build>
X-Cron-Env: <HOME=/Users/build>
Message-Id: <20180302090000.A7A94296CBA3@BuildServer1.local>
Date: Fri,  2 Mar 2018 10:00:00 +0100 (CET)

upload: ../../app/logs/debug.log to s3://**my-s3***/app/logs/debug.log
Вайнит
источник
1
Это сообщение об ошибке хранится в почтовом ящике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).

Али
источник