私の Mac のほとんどのログには、出力メッセージの前に次のようなタイムスタンプが付いています。
Nov 14 17:55:24 - SoftRAID Driver: SoftRAID driver loaded, version 5.8.1.
私は cron で実行可能ファイルを実行しており、メールを使用する代わりに、すべての情報をログ ファイルに出力し、出力の前にある各行にタイムスタンプを追加したいと考えています。私は>>
1 つのファイルに追加するために を使用しています。
これは私のcrontabです:
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
t時間stampユーティリティを使用すると、次のようなことができるはずです
/usr/local/bin/urlwatch | /path/to/ts >> /Users/john/cronjobs/urlwatch.log
( Linux システムでは/path/to/ts
通常、この場所になります/usr/bin/ts
が、OSX では別の場所になる場合があります)。送信元man ts
:
DESCRIPTION ts adds a timestamp to the beginning of each line of input.
デフォルト以外の時間形式を指定したい場合は、そうすることができますが、符号は%
特別な意味を持つためcron
エスケープする必要があることに注意してください。たとえば、
複数の行に同じタイムスタンプが付与されていることがあります。5月原因としては、それらを生成しているプログラムが出力をバッファリングしていることが考えられます。unbuffer
またはstdbuf
ユーティリティのいずれかがシステムで利用できる場合は、5月ここで説明するように、行バッファリングを強制することが可能です。