「top」を実行すると、Perlスクリプトプロセスが「S」状態にあることがわかります。何がこのPerlプロセスをスリープ状態にし、どのように起きるかを知る方法はありますか?デバッグ方法を使用すると、Perlスクリプトを「S」状態にする行に関するより多くの洞察を得ることができます。
ベストアンサー1
状態のプロセスは、S
通常、ファイルやネットワークの読み取りまたは書き込み、または他の呼び出されたプログラムが完了するのを待つなど、ブロックシステムコールにあります。
これを使用して、strace -p <pid>
現在どのシステムコールが発生しているかを確認できます。次のような出力が生成されます。
write(1,"foobar"...,4096
これは、プロセスが「foobar」で始まる4096バイトをstdout(fd#1)に書き込もうとしますが、リダイレクトされた場所ごとに使用中であり、出力バッファがいっぱいであることを意味します。