MacOSX Lionのcronログファイルはどこにありますか?


25

最近の変更まで問題なく動作したcronジョブをトラブルシューティングしたいのですが、cronログファイルが見つかりません。どこにありますか?


2
それは本当にcronジョブですか?launchdを使用していますか?CronはOS Xで非推奨になりました。
jaberg12年

1
cronジョブのログファイルを設定しましたか?
-daviesgeek

それは実際にcron私が設定した仕事でcron -eあり、私はそれを見ることができcron -l、それはLionとその前にSnow leopardで長い間働いていたと確信しています。
アリ

いいえ。ジョブ内のログファイルに書き込みを行ったため、「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に出力またはエコー出力)が/ tmpディレクトリのstdout.logという名前のテキストファイルに送信され、STDERRがtempディレクトリのstderr.logに送信されます。多くのユーティリティは、STDERRを使用して、プログラムの実際の実行によって生成されたエラーではなく、アプリケーションエラーの場合に特別なエラーメッセージを出力します。(STDERRの詳細については、Wikipediaをご覧ください。)


おかげで、それはまさに私がやろうとしていたこと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自体をデバッグできます。plistの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はHigh Sierraで動作します。
魚モニター

15

デフォルトでは、「ロギング」は有効になっていません。ただし、mailコマンドを実行することにより、いくつかの有用な情報を取得できます。

mailコマンドのTL; DR :Enterキーを押してメッセージを読み、Enterキーを押しqて終了します。


4
とても良い、ありがとう。私は私のクロンで認識されていないコマンドがあることを私に示しました。乾杯!
ジョシュアピンター

7

cron-jobログインを見つけることができました。

/var/mail/{user-name}

以下は、AWS CLIコマンドを実行したときに取得したcronジョブログです。

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、成功したcronジョブも見つけることができました。答えを更新しました。
ビニース

いいね!受け入れられた答えであるべきです!
トロールホーン

3

cronが(私のように)ジョブを実行しているときに判明しましたが、で/usr/local/binはありませんPATH
試行錯誤でこれを見つけ、問題が見つかるまで徐々に機能を追加していくことを知っていたシンプルなものからゼロからジョブを構築しました。

その他の提案と回答
について:何らかの理由で(少なくとも私のマシンでは、SnowLeopardからアップグレードされたLionを実行している)cron、plistファイルで指定されたパラメーターを使用せず、Lionのcronは何も書かないstdoutまたはstderrに。 launchd/System/Library/LaunchDaemons/com.vix.cron.plist

ちなみに、http://s3tools.org/s3cmdを使用syncして、Amazon S3バケットをバックアップとして使用しているフォルダー(プリミティブなDropBoxなど)を使用しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.