Você sempre pode fazer:
ps -eLo pid= -o tid= | awk '$2 == 792 {print $1}'
No Linux:
$ readlink -f /proc/*/task/792/../..
/proc/300
Ou com zsh
:
$ echo /proc/*/task/792(:h:h:t)
300
Eu corro iotop
para verificar programas que são usuários de discos pesados, caso eu precise diminuir sua prioridade. Geralmente, isso é bom o suficiente, mas iotop
mostra apenas o ID do encadeamento (TID) e, às vezes, eu quero saber o ID do processo (PID) para que eu possa descobrir mais sobre qual processo é responsável.
Infelizmente, embora ps
possa exibir o TID (também conhecido como SPID, LWP), ele não possui um sinalizador para obter uma lista de TIDs, como faz para uma lista de PIDs com --pid
. O melhor que posso fazer é listar os TIDs e, em seguida, grep
da saída. Por exemplo, se o id do segmento for 792, posso fazer
$ ps -eLf | grep ' 792 '
que funciona razoavelmente bem, mas é um pouco deselegante.
Existe uma maneira melhor?