从 TID 获取 PID

Nat*_*ver 11 ps thread pthreads

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

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

$ ps -eLf | grep ' 792 '
Run Code Online (Sandbox Code Playgroud)

这工作得相当好,但有点不优雅。

有没有更好的办法?

Sté*_*las 10

你总是可以这样做:

ps -eLo pid= -o tid= | awk '$2 == 792 {print $1}'
Run Code Online (Sandbox Code Playgroud)

在 Linux 上:

$ readlink -f /proc/*/task/792/../..
/proc/300
Run Code Online (Sandbox Code Playgroud)

或与zsh

$ echo /proc/*/task/792(:h:h:t)
300
Run Code Online (Sandbox Code Playgroud)