実行中のプロセスで呼び出しを追跡して計算します。

実行中のプロセスで呼び出しを追跡して計算します。

数時間実行されるバックグラウンドプロセスがあります。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「Attach」メッセージを抑制し、-e signal=none信号追跡を抑制します。

関連情報