Obtém o PID do TID

5

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?

    
por Nathaniel M. Beaver 15.03.2018 / 17:35

1 resposta

6

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
    
por 15.03.2018 / 17:58