stderrがファイルに追加される方法のカスタマイズ

stderrがファイルに追加される方法のカスタマイズ

rsyncを使用して2つのディレクトリを同期するシェルスクリプトに関する質問があります。 rsyncコマンドの結果(成功の有無にかかわらず)をstatusというファイルに保存し、問題が発生するとstderr出力がerrorというファイルに追加されます。ただし、エラーファイルに実際のエラーより前のタイムスタンプを入力する方法が見つからないようです。

最後に、次のようなものが必要です。

if rsync source destination 2>> error # but I need to have the date before the actual error is appended!
then
   echo "`date` - Success" >> status
else
   echo "`date` - Failure" >> status
fi

また、以下を試しました。

(rsync source destination && echo "`date` - Success" >> status || echo "`date` - Failure" >> status) 2>>error

これを行う唯一の方法は、stderr出力を一時ファイルに保存し、タイムスタンプが入力された後に内容がエラーファイルに追加されるようにすることです。

ベストアンサー1

これを試してみましたか?

rsync -av blah blah 2>&1|perl -e "while(<>){s/^/`date`  /g; print;}" >>logfile

行の先頭に日付とスペースが追加されます。

おすすめ記事