
私はパイプラインの途中にあるプロセスがなぜスリープ状態にあり、データ処理に忙しくないのかよく考えました。私の現在のアプローチは次のとおりです。
pid
興味深いものを発見sudo strace -pt pid
ブロックシステムコールとオブジェクト(fd、child、futexなど)のインポート- Ctrlcstraceを分離するにはクリックしてください。
- 適切なオブジェクトを探す
/proc/pid
grep /proc/
またはlsof
待機中のパイプまたはプロセスのもう一方の端を探している場合- 新しいものとして#1から繰り返し
pid
strace
一緒にうまく機能しない(特に自動化するのが難しい)多くのツールを組み合わせるのはかなり遅いプロセスです。このループを実行し、プロセスの待機チェーンを引き出すことができ、または少なくとも1回の反復をあまりぎこちなくするツールがありますか?
Linux 3.2、Ubuntu LTS 12、x64、VirtualBox(利用可能な場合)。
答え1
ほとんどps
の場合、ツリーオプションまたは適切な名前の関連ユーティリティですptree
。
現在の作業システムにはptreeがないため、現在は次のものを使用しています。
ps fauw
私も一つあると思います。
ps taux (t making more sense than f)
最後に、一部のPSには、ビューにプログラムスレッドを含めるオプションもあります。
これはあなた(そして私)が期待していた自動化されたソリューションではありませんが、私の経験によれば、プロセスツリーには一連の「可能な容疑者」があり、一般的にツリーをスキャンするだけで問題がどこにあるかを推測できます。
私