![记录任何类似于“时间”的命令](https://linux22.com/image/101090/%E8%AE%B0%E5%BD%95%E4%BB%BB%E4%BD%95%E7%B1%BB%E4%BC%BC%E4%BA%8E%E2%80%9C%E6%97%B6%E9%97%B4%E2%80%9D%E7%9A%84%E5%91%BD%E4%BB%A4.png)
该time(1)
命令允许您通过将任何命令作为参数传递给 来计时time
。
我知道可以通过 重定向stderr
和stdout
到文件2>&1
,并且还tee(1)
允许将其输入复制到屏幕和文件。但是,我不知道如何向日志添加时间戳。
是否有一个工具可以重定向stderr
到stdout
一个文件,并将时间戳附加到其中以供记录目的?
答案1
您可以使用ts(1)
moreutils 中的内容。
ts
从更多实用程序将为您提供的每一行输入添加一个时间戳。您也可以使用 strftime 对其进行格式化。
$ echo 'foo bar baz' | ts
Mar 21 18:07:28 foo bar baz
$ echo 'blah blah blah' | ts '%F %T'
2012-03-21 18:07:30 blah blah blah
$
要安装它:
sudo apt-get install moreutils
答案2
annotate-output
从 Debian尝试开发脚本包裹。它显示时间戳,并在标准输出之前写入“O”,在标准错误之前写入“E”。例子:
# run `ls` on one file that exists, and one that doesn't...
annotate-output ls /bin/bash /tmp/boosh
输出:
03:30:52 I: Started ls /bin/bash /tmp/boosh
03:30:52 O: /bin/bash
03:30:52 E: ls: cannot access '/tmp/boosh': No such file or directory
03:30:52 I: Finished with exitcode 2