cronにエラーログに日付が含まれるように設定する

cronにエラーログに日付が含まれるように設定する

次のクローンジョブを実行しています。

/home/ubuntu/scripts/austria/archive.sh >> /home/ubuntu/logs/austria/archive.log 2>> /home/ubuntu/logs/austria/archive.err

スクリプトが実行されるたびに通常のログファイルが生成され、エラーが発生した場合は.errファイルをエラーに更新します。しかし、エラーに間違った日付を含めることができるかどうか疑問に思います。存在する丸太。私はcrontabを初めて使用するのにこの問題が発生するのに苦労しています。ありがとうございます! !

ベストアンサー1

入力にタイムスタンププレフィックスを追加するts(1)他の同様のユーティリティに出力をパイプします。moreutils

% (echo hi; sleep 3; echo there) | ts
Aug 28 18:52:42 hi
Aug 28 18:52:45 there
% 

したがって、標準エラーのタイムスタンプだけが必要であるとします。

...archive.sh 2>&1 >>.../out.log | ts >>.../err.log

これは非常にトリッキーで、シェルリダイレクトが作成されたとおりに正しく機能することが重要です。これはシェルリダイレクトを確認するために使用するものです。

$ perl -le 'print "out"; warn "err!\n"' 2>&1 >> out | sed 's/^/blah /' > err
$ cat out
out
$ cat err
blah err!

別のオプションは、出力をにパイプすることですlogger。この場合、syslogはログの前にタイムスタンプを付け、syslogデーモンの設定に従っていくつかのログファイルにログをダンプします。

archive.shもう1つのオプションは、stderrに送信されたすべての内容を含むように適切なdate呼び出し出力を直接編集することです。

echo `date` oh no >&2

おすすめ記事