どのプロセスがSTDOUTに書き込まれているかを確認する方法は?

どのプロセスがSTDOUTに書き込まれているかを確認する方法は?

2つの実行中のプロセスインスタンスがあります。そのうちの1つは「驚くべきことです」と断続的にSTDOUTにエラーを印刷することです。

破損したプロセスを終了したいが、間違ったプロセスを終了しないようにしてください。それらはほぼ同じ時間に始まり、使用すると両方topともほぼ同じ量のメモリとCPUを使用することがわかります。どのプロセスが正しく実行されなかったかを示す情報が見つからないようです。

最も安全な方法は、どのプロセス/pidがSTDOUTに書き込まれているかを調べることです。

これを行う方法はありますか?

ベストアンサー1

SIGSTOPを送信して両方のプロセスを停止できます(pid1とpid2を実際にPIDまたは使用killallおよびアプリケーション名):

kill -SIGSTOP pid1 pid2

端末(またはstdoutがリダイレクトされる場所)での印刷を停止する必要があります。それでは、次のいずれかを試してください。

kill -SIGCONT pid1

エラーメッセージがすぐに表示される場合は、これが最初のプロセスであることがわかります。そうでない場合は、再び停止して2番目の作業を続行できます。

停止したプロセスを終了する前にSIGCONTを送信することをお勧めします。

Ctrl-Zシェルジョブ制御(fg %1、、、、…)にも同じ技術を使用できます。bg %1kill %1

おすすめ記事