如何从 crontab 作业将时间戳添加到 stdout 和 stderr?

如何从 crontab 作业将时间戳添加到 stdout 和 stderr?

当我从 cron 任务调用脚本时,我想将时间戳跟踪放入两个不同的文件中。一个文件用于 stdout script.log,另一个文件用于 stderrscript.err

通过这个 cron 行,我获得了文件的时间戳script.log,但不能使用script.err

*/1 * * * * ((/home/user/script.sh) | ts "\%H:\%M:\%.S ->") 2>>/home/user/script.err >> /home/user/script.log

我如何也添加时间戳script.err

答案1

一种方法是先重定向 ts 的 stdout,然后将管道的 stderr 重定向到 stdout,然后将管道重定向到另一个ts::

*/1 * * * * (/home/user/script.sh | ts "\%H:\%M:\%.S ->" >> /home/user/script.log) 2>&1 | ts "\%H:\%M:\%.S ->" >> /home/user/script.err

(尽管如此,第一个的 stderr 输出ts也将被记录为第二个ts。)

相关内容