私が書いていないテストプログラムをよりよく文書化しようとしています。 STDERR出力のすべての行にタイムスタンプがあることを望みますが、可能であればSTDOUTを保存したいと思います。また、stdoutとstderr(STDERRタイムスタンプの有無にかかわらず)を記録するためのファイル(all.txt)とSTDERR出力専用ファイル(タイムスタンプ付きのerrors.txt)も必要です。
返品、ターミナルで何も鳴っても構いません。。これはバッチスタイルプログラムです。
後で出てくるrsyslogを見ましたが、これは本当に速く解読できるソリューションです。少なくとも、出力リダイレクトについてもっと学んだら。似たような質問をたくさん読んだが、この特定の事例とは関係がないようです。
stderr出力にタイムスタンプを追加するためにパイプとこの質問のスキルを使用したいと思います。https://serverfault.com/questions/310098/adding-a-timestamp-to-bash-script-log
ここで最もクリーンな解決策は何ですか?私のRHEL5システムはbash 3.2.25を実行しています。
+----stdout-------------------+
/ \
test.pl --+ +--> all.txt
\ /
+----stderr | add_timestamps -+----> errors.txt
答え1
私はこれがあなたが望むことをするだろうと思います:
test.pl 2>&1 >all.txt | add_timestamps | tee -a all.txt > errors.txt
- stderrをstdoutにリダイレクトする(後でパイプできるように)
- (raw) 標準出力を次にリダイレクト
all.txt
- pipe stdout(現在のエラーメッセージを含む)を次にリンクします。
add_timestamps
tee
エラー(タイムスタンプを含む)を追加するために使用されます。all.txt
- 最後に、エラーは次にも記録されます。
errors.txt