web-dev-qa-db-ja.com

TIDからPIDを取得

iotop を実行して、優先度を下げる必要がある場合に備えて、ディスクのヘビーユーザーであるプログラムをチェックします。通常、これで十分ですが、iotopはスレッドID(TID)のみを表示します。プロセスID(PID)を知りたいので、どのプロセスが原因であるかを詳しく調べます。

残念ながら、psはTID(別名SPID、LWP)を表示できますが、--pidを使用したPIDのリストの場合のようにTIDのリストを取得するためのフラグはありません。私ができる最善のことは、TIDをリストしてから、出力をgrepすることです。たとえば、スレッドIDが792の場合、

$ ps -eLf | grep ' 792 '

これは適度に機能しますが、少しエレガントではありません。

もっと良い方法はありますか?

6

あなたはいつでもできます:

ps -eLo pid= -o tid= | awk '$2 == 792 {print $1}'

Linuxの場合:

$ readlink -f /proc/*/task/792/../..
/proc/300

またはzshを使用:

$ echo /proc/*/task/792(:h:h:t)
300
7