来自正在运行的进程的 strace 调用并对它们进行计数

来自正在运行的进程的 strace 调用并对它们进行计数

我有一个将运行很多个小时的后台进程。我想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抑制信号迹线。

相关内容