Se eu souber o número PID de um processo, como posso obter seu nome?

215

Se eu tiver o número PID de um processo (em uma máquina UNIX), como posso descobrir o nome de seu processo associado?

O que tenho que fazer?

    
por AndreaNobili 17.08.2013 / 09:12

10 respostas

233

Em todos os sistemas compatíveis com POSIX, e com o Linux, você pode usar ps :

ps -p 1337 -o comm=

Aqui, o processo é selecionado pelo seu PID com -p . A opção -o especifica o formato de saída, comm , que significa o nome do comando.

Veja também: ps - Edição 6 do Especificações do Open Group Base

    
por 17.08.2013 / 10:21
39

Você pode encontrar o nome do processo ou o comando usado pelo id do processo ou pid de

/proc/pid/cmdline

fazendo

cat /proc/pid/cmdline

Aqui pid é o pid para o qual você deseja encontrar o nome
Por exemplo:

 # ps aux

   ................
   ................
   user  2480  0.0  1.2 119100 12728 pts/0  Sl   22:42   0:01 gnome-terminal
   ................
   ................

Para encontrar o nome do processo usado pelo pid 2480 você pode usar

# cat /proc/2480/cmdline 

 gnome-terminal
    
por 17.08.2013 / 10:04
12

Para pegar o caminho do programa usando um certo pid você pode usar:

ps ax|egrep "^ [PID]"

como alternativa, você pode usar:

ps -a [PID]

    
por 18.04.2015 / 04:16
7
# ls -la /proc/ID_GOES_HERE/exe

Exemplo:

# ls -la /proc/1374/exe
lrwxrwxrwx 1 chmm chmm 0 Mai  5 20:46 /proc/1374/exe -> /usr/bin/telegram-desktop
    
por 06.05.2016 / 02:14
6

Você pode usar o pmap. Estou procurando por PID 6649. E cortando os detalhes extras do processo.

$ pmap 6649 | head -1
6649:   /usr/lib64/firefox/firefox
    
por 27.05.2017 / 06:28
3

Você também pode usar o awk em combinação com o ps

ps aux | awk '$2 == PID number for a process  { print $0 }'

exemplo:

root@cprogrammer:~# ps aux | awk '$2 == 1 { print $0 }'
root         1  0.0  0.2  24476  2436 ?        Ss   15:38   0:01 /sbin/init    

para imprimir o HEAD LINE você pode usar

 ps --headers aux |head -n 1 && ps aux | awk '$2 == 1 { print $0 }'

                 (or) 

 ps --headers aux |head -n 1; ps aux | awk '$2 == 1 { print $0 }'


root@cprogrammer:~# ps --headers aux |head -n 1 && ps aux | awk '$2 == 1 { print $0 }'
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.2  24476  2436 ?        Ss   15:38   0:01 /sbin/init
    
por 17.08.2013 / 11:32
2

Semelhante a Resposta do slhck , mas contando com operações de arquivo em vez de invocações de comando:

MYPID=1
cat "/proc/$MYPID/comm"
    
por 31.08.2015 / 01:31
2

Surpreendentemente, ninguém mencionou a opção -f (comando completo) para ps. Eu gosto de usá-lo com -e (tudo) e canalizar os resultados para o grep para que eu possa restringir minha pesquisa.

ps -ef | grep <PID>

Isso também é muito útil para ver os comandos completos que alguém está executando e que estão usando muitos recursos em seu sistema. Isso mostrará as opções e os argumentos passados para o comando.

    
por 23.02.2016 / 22:47
0

Eu acho o método mais fácil de estar com o seguinte comando:

ps -awxs | grep pid
    
por 21.11.2016 / 10:48
0

fez um script simples para encontrar o PID e usar dentro dos scripts do bash ...
use com cautela !!

Screenshot:

link

André

    
por 26.12.2016 / 16:08