我有一个将运行很多个小时的后台进程。我想write
实时追踪和统计通话次数。
sudo strace -p27861 -s50 -e write
它给了我这样的行:
write(1, "...........", 70) = 70
我想要的是获得这样的调用的实时计数:
write(1, "...........", 70) = 70, 1
write(1, "...........", 560) = 560, 2
write(1, "...........", 103) = 103, 3
或仅计数:
1
2
3
答案1
您可以通过对输出进行后处理来做到这一点,例如使用 GNU AWK:
strace -q -p27861 -s50 -e write -e signal=none 2>&1 | gawk '{ print $0 ", " ++i }'
(这准确地给出了您所追求的实时输出),或者cat -n
按照建议用户414777:
strace -q -p27861 -s50 -e write -e signal=none 2>&1 | cat -n
-q
抑制“正在附加”消息,并-e signal=none
抑制信号迹线。