从TID获取PID

从TID获取PID

我跑iotop检查大量使用磁盘的程序,以防我需要降低它们的优先级。通常这已经足够了,但iotop只显示线程 ID (TID),有时我想知道进程 ID (PID),以便我可以找到有关哪个进程负责的更多信息。

不幸的是,虽然ps可以显示 TID(又名 SPID、LWP),但它没有一个标志来获取 TID 列表,就像处理 PID 列表一样--pid。我能做的就是列出 TID,然后grep列出输出。例如,如果线程id是792,我可以这样做

$ ps -eLf | grep ' 792 '

效果相当好,但有点不优雅。

有没有更好的办法?

答案1

你总是可以这样做:

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

相关内容