cronジョブで呼び出されるスクリプトにシェルエラーを記録するにはどうすればよいですか?

cronジョブで呼び出されるスクリプトにシェルエラーを記録するにはどうすればよいですか?

今朝、次のメッセージが見つかりました。

編集する:メッセージの件名も追加して、そのメッセージがどこから来たのかを明確に知ることができました。

Return-Path: <root@REDACTED>
Received: from localhost (localhost [127.0.0.1])
  (uid 0)
  by REDACTED with local
  id 00000000005DC0DF.00000000633BA87E.000042C7; Tue, 04 Oct 2022 05:29:02 +0200
From: CronDaemon <root@REDACTED>
To: admlog@REDACTED
Subject: Cron <root@north> test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin>
X-Cron-Env: <MAILTO=REDACTED>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <LOGNAME=root>
Message-ID: <courier.00000000633BA87E.000042C7@REDACTED>
Date: Tue, 04 Oct 2022 05:29:02 +0200
X-Mime-Autoconverted: from 8bit to 7bit by courier 1.1

/etc/cron.daily/syslogrotate:
parse error: Invalid numeric literal at line 2, column 0
parse error: Invalid numeric literal at line 2, column 0

syslogrotate回転したファイルを表示し、必要に応じて他のスクリプトを呼び出すためにシェルスクリプトを呼び出すように修正しました。 Cron は、stderr で作成されたすべてのエントリを最初の最初のプロセスに帰属します。実際のスクリプトファイルや行番号まで知っておくといいようです。これを行うためのツールはありませんか?

ベストアンサー1

syslogによって呼び出されたスクリプトが呼び出す各サブタスクの終了コードを確認し、サブタスクがゼロ以外のコードで終了すると、スクリプトはスクリプトのパスと名前を示すメッセージをstderrに書き込みます。たとえば、/path/to/the/sub_task.sh returned exit code 2。メッセージはcronの電子メールに含まれ、必要なスクリプト名を受け取ります。

おすすめ記事