cronの出力をログファイルにリダイレクトしてタイムスタンプを追加するにはどうすればよいですか?

cronの出力をログファイルにリダイレクトしてタイムスタンプを追加するにはどうすればよいですか?

私のMacのほとんどのログには、次のようにメッセージが出力される前のタイムスタンプがあります。

Nov 14 17:55:24 - SoftRAID Driver: SoftRAID driver loaded, version 5.8.1.

私はcronで実行ファイルを実行していますが、メールを使用するのではなく、すべての情報をログファイルに出力し、出力の前の各行にタイムスタンプを追加したいと思います。私は>>単一のファイルに追加するために使用します。

これは私のクローンタブです:

SHELL=/bin/bash
MAILTO=""
* 6-23 * * * /usr/local/bin/urlwatch >> /Users/john/cronjobs/urlwatch.log

これは私がurlwatch.logから得たものです。

UNCHANGED: (01)urlwatch update released (https://github.com/thp/urlwatch/releases/latest)

出力を次のように作成するにはどうすればよいですか?

Nov 14 17:55:24 - UNCHANGED: (01)urlwatch update released (https://github.com/thp/urlwatch/releases/latest)

私はオンラインで様々な提案を試しましたが、成功しませんでした。テキストファイルとして保存する方が簡単な場合は大丈夫です。

近いこれを試しました。

* 6-23 * * * (date && /usr/local/bin/urlwatch)  >> /Users/john/cronjobs/urlwatch.log

ログファイルの出力は次のとおりです。

Sun Mar 15 13:35:00 CDT 2020
UNCHANGED: (03)RansomWhere? Objective-See (https://objective-see.com/products/ransomwhere.html)
UNCHANGED: (01)urlwatch update released (https://github.com/thp/urlwatch/releases/latest)
UNCHANGED: (02)urlwatch webpage (https://thp.io/2008/urlwatch/)

答え1

持っているか入手できる場合自家製例えば)ts ティーStampユーティリティを使用すると、次のことができます。

/usr/local/bin/urlwatch | /path/to/ts >> /Users/john/cronjobs/urlwatch.log

/path/to/ts通常は/usr/bin/tsLinuxシステムにあり、OSXの他の場所に配置することもできます)からman ts

DESCRIPTION
       ts adds a timestamp to the beginning of each line of input.

デフォルト以外の時間形式を指定したい場合は、これを行うことができますが、シンボルには%特別な意味があるため、cronエスケープする必要があることに注意してください。例を見る

複数の行セットに同じタイムスタンプがあることを確認できます。可能おそらく、これを生成したプログラムが出力をバッファリングしているからです。システムにunbufferまたはユーティリティがある場合stdbuf可能行バッファリングは次のように強制できます。

関連情報