stderrリダイレクトにタイムスタンプを追加する

stderrリダイレクトにタイムスタンプを追加する

私のコンピュータで実行すると、多くの出力を生成するスクリプトを実行しています。コンテンツに興味がないので、その出力をにリダイレクトし、/dev/nullファイルからエラーをキャッチします(スクリプトが失敗した場合にのみ興味があるため)。ただし、ファイルのエラーにはタイムスタンプは含まれていません。

stderrリダイレクトにタイムスタンプを追加する方法はありますか?これは私のコマンドですが、タイムスタンプを追加する方法がわかりません。

myScript.sh 2>> logfile.txt 1>/dev/null

日付を印刷するためにmyScript.shを変更することはできないので、それもオプションではありません。私は次のことを試しました:

myScript.sh 2>> logfile.txt << date

しかし、これはうまくいきません。

ベストアンサー1

tsfromは、moreutilsいくつかの出力の各行にタイムスタンプを追加するために使用できます。

myScript.sh 2>&1 > /dev/null | ts >> logfile.txt

同様の形式でタイムスタンプ形式を指定できますstrftime()

$ seq 4 | ts '%FT%.T%z:'
2023-06-06T14:11:15.244613+0100: 1
2023-06-06T14:11:15.244693+0100: 2
2023-06-06T14:11:15.244729+0100: 3
2023-06-06T14:11:15.244759+0100: 4

たとえば、マイクロ秒精度のISO8601タイムスタンプ形式です。

おすすめ記事