crontabジョブでstdoutとstderrにタイムスタンプを追加する方法は?

crontabジョブでstdoutとstderrにタイムスタンプを追加する方法は?

cronジョブでスクリプトを呼び出すときに、タイムスタンプトレースを2つの異なるファイルに保存したいと思います。 stdout用のファイル1つとscript.logstderr用のファイル1つscript.err

このcron行を使用すると、ファイルのタイムスタンプを取得できますが、script.log使用できません。script.err

*/1 * * * * ((/home/user/script.sh) | ts "\%H:\%M:\%.S ->") 2>>/home/user/script.err >> /home/user/script.log

タイムスタンプもどのように追加できますかscript.err

ベストアンサー1

1つの方法は、最初にtsのstdoutをリダイレクトしてから、パイプのstderrをstdoutにリダイレクトしてから、パイプを別のパイプにリダイレクトすることですts

*/1 * * * * (/home/user/script.sh | ts "\%H:\%M:\%.S ->" >> /home/user/script.log) 2>&1 | ts "\%H:\%M:\%.S ->" >> /home/user/script.err

(それにもかかわらず、最初のstderr出力はts2番目に書き込まれますts。)

おすすめ記事