我的 Mac 上的大多數日誌在輸出訊息之前都有一個時間戳,如下所示:
Nov 14 17:55:24 - SoftRAID Driver: SoftRAID driver loaded, version 5.8.1.
我正在 cron 中運行一個可執行文件,而不是使用郵件,我想將所有資訊輸出到日誌文件,並在輸出前面的每一行添加時間戳記。我用來>>
附加到單一文件。
這是我的 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
(/path/to/ts
通常位於/usr/bin/ts
Linux 系統上;也可能位於 OSX 上的另一個位置)。從man ts
:
DESCRIPTION ts adds a timestamp to the beginning of each line of input.
如果您想指定非預設時間格式,則可以這樣做,但請記住該%
符號具有特殊意義,cron
並且必須轉義。請參閱範例
您可能會發現多組行具有相同的時間戳記 - 即可能是因為生成它們的程式正在緩衝其輸出。如果unbuffer
或stdbuf
實用程式可用於您的系統,則它可能可以強制執行行緩衝,如下所述: