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


25

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


2
Це справді робота з крон або ви використовуєте запуск. Cron був застарілий на OS X.
jaberg

1
Ви встановили файл журналу для завдання cron?
daviesgeek

це насправді cronробота, з якою я її влаштував, cron -eі я можу це побачити, cron -lі я впевнений, що вона довго працювала на Лева, а до цього на Сніжному леопарді.
Алі

і ні, я не встановлюю сам файл журналу вручну для 'cron', хоча я записую у файл журналу всередині завдання, і він нещодавно перестав працювати, коли щось змінив.
Алі

2
Алі, оскільки у вас є відповідь, будь ласка, опублікуйте її як відповідь і прийміть її. Не редагуйте це у питанні. Вам не лише дозволяється, але й заохочується відповідати на власне запитання.
Джейсон Салаз

Відповіді:


30

За замовчуванням, cron не реєструє вихід виконаних завдань. Можна зафіксувати той факт, що виконуються кронштейни, але це також не є типовим для OS X.

Для того щоб дослідити вихід виконання cronjob, пропоную змінити лінію cronjob для перенаправлення STDOUT та STDERR на logfiles. У вашому файлі 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 unloading та launchctl loading плісту, чи оскільки це системний демон, якщо вам доведеться повністю перезапустити. Я б запропонував останнє просто бути впевненим.
Джейсон Салаз

21

Набагато простіше просто додати таке /etc/syslog.conf:

cron.* /var/log/cron.log 

Потім перезапустіть syslog

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

Випробуваний та працює на OSX 10.7.4


3
Мені подобається ця ідея , - але в 10.10.5, мій /etc/syslog.confкаже # Note that flat file logs are now configured in /etc/asl.conf. Цей файл має інший синтаксис, мені незрозуміло, як налаштувати вхід в нього.
Кен Вільямс

@KenWilliams, навіть якщо це говорить, syslog.conf все ще працює, на Високій Сьєррі.
Монітор риб

15

За замовчуванням "реєстрація" не ввімкнена. Але ви можете отримати корисну інформацію, запустивши mailкоманду.

TL; DR в mailкоманді: натисніть клавішу Enter, щоб прочитати повідомлення, а потім qі Enter, щоб вийти.


4
Дуже добре, дякую. Мій показав мені, що з моїм Cron була невпізнана команда. Ура!
Джошуа Пінтер

7

Мені вдалося знайти вхід із завданням на роботу,

/var/mail/{user-name}

Далі йде журнал завдань cron, який я отримав для виконання команди AWS CLI,

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

Приємно! Повинна бути прийнята відповідь!
Trollhorn

3

Виявилося, коли cron виконує завдання (як я), /usr/local/binне в PATH.
Я виявив це шляхом спроб та помилок і будував роботу з нуля з простих речей, які я знав, що будуть працювати, і поступово додав речі, поки не знайшов проблему.

Про інші пропозиції та відповіді:
Чомусь (принаймні, на моїй машині, на якій працює Лев, модернізований від SnowLeopard) cronне використовуються параметри, вказані у файлах launchdплістів, які вичитуються для читання, /System/Library/LaunchDaemons/com.vix.cron.plistабо, можливо, cron на Lion нічого не пише to stdout або stderr.

До речі, я використовую http://s3tools.org/s3cmd у syncпапці з відром Amazon S3 в якості резервної копії (як примітивний DropBox).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.