我的 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
可能可以强制执行行缓冲,如下所述: