![如何从 crontab 作业将时间戳添加到 stdout 和 stderr?](https://linux22.com/image/160061/%E5%A6%82%E4%BD%95%E4%BB%8E%20crontab%20%E4%BD%9C%E4%B8%9A%E5%B0%86%E6%97%B6%E9%97%B4%E6%88%B3%E6%B7%BB%E5%8A%A0%E5%88%B0%20stdout%20%E5%92%8C%20stderr%EF%BC%9F.png)
当我从 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
。)