让 cron 在错误日志中包含日期

让 cron 在错误日志中包含日期

我正在运行以下 cron 作业:

/home/ubuntu/scripts/austria/archive.sh >> /home/ubuntu/logs/austria/archive.log 2>> /home/ubuntu/logs/austria/archive.err

每次脚本运行时,它都会生成一个常规日志文件,如果出现错误,它会使用错误更新 .err 文件。但是,我想知道错误是否可能还包括错误日期日志。我对 crontab 很陌生,我很难让这种情况发生。谢谢!!

答案1

将输出通过管道传输到ts(1)其他moreutils类似的实用程序,这些实用程序为任何输入添加时间戳前缀:

% (echo hi; sleep 3; echo there) | ts
Aug 28 18:52:42 hi
Aug 28 18:52:45 there
% 

因此,假设您只想标准错误上的时间戳:

...archive.sh 2>&1 >>.../out.log | ts >>.../err.log

请注意,这确实很棘手,而且 shell 重定向必须完全按照编写的方式进行,这一点很重要。这是我用来验证 shell 重定向的方法:

$ perl -le 'print "out"; warn "err!\n"' 2>&1 >> out | sed 's/^/blah /' > err
$ cat out
out
$ cat err
blah err!

另一种选择是将输出通过管道传输到logger,在这种情况下,syslog 会在日志中添加时间戳前缀,然后将日志转储到某个日志文件中,具体取决于 syslog 守护程序设置。

另一种选择可能是直接编辑archive.sh以包含发送到 stderr 的所有内容的适当date调用输出:

echo `date` oh no >&2

相关内容