我想iostat
在设备sda的输出前加上时间戳。Ymd H:M:S就足够了。然而,这似乎并不那么简单。我的第一次尝试很简单:
# vi just_echo
mystamp=$(date '+%Y-%m-%d %H:%M:%S')
cat /dev/stdin | grep sda | sed "s/sda/$mystamp/"
# iostat 5 | ./just_echo
但是,这不会产生任何输出。如果我删除sed
我会得到一些输出,但这里发生了什么?
根据https://meta.stackexchange.com/questions/172307/duplicate-questions-on-other-se-sites
问题在这里得到解答。
moreutils包括
ts
很好地做到了这一点:command | ts '[%Y-%m-%d %H:%M:%S]'
它也消除了循环的需要,每一行输出都会有一个时间戳。
您想知道该服务器何时恢复您重新启动?只需运行
ping | ts
,问题就解决了:D。如果您想要不使用不同的方法
ts
:POSIX 外壳
请记住,由于许多 shell 在内部将其字符串存储为 cstrings,如果输入包含空字符 (
\0
),则可能会导致该行过早结束。GNU awk
Perl
Python
红宝石