Se eu souber o número PID de um processo, como posso obter o seu nome?
Se eu tiver o número PID de um processo (numa máquina UNIX), como posso saber o nome do processo associado?
O que tenho de fazer?
Se eu tiver o número PID de um processo (numa máquina UNIX), como posso saber o nome do processo associado?
O que tenho de fazer?
Em todos os sistemas compatíveis com POSIX, e com Linux, pode usar ps
:
ps -p 1337 -o comm=
Aqui, o processo é seleccionado pelo seu PID com -p
. A opção -o
especifica o formato de saída, comm
significa o nome do comando.
Veja também: ps
- The Open Group Base Specifications Issue 6
Pode encontrar o nome do processo ou o comando utilizado pelo processo-id ou pid de
/proc/pid/cmdline
fazendo
cat /proc/pid/cmdline
Aqui pid é o pid para o qual pretende encontrar o nome Para exmaple:
# 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 utilizado pelo pid 2480 que utiliza pode
# cat /proc/2480/cmdline
gnome-terminal
Para obter o caminho do programa utilizando um determinado pid pode utilizar:
ps ax|egrep "^ [PID]"
em alternativa pode utilizar:
ps -a [PID]
Você pode usar o pmap. Estou à procura do PID 6649. E cortar os detalhes do processo extra.
$ pmap 6649 | head -1
6649: /usr/lib64/firefox/firefox
# 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
Semelhante à resposta de slhck , mas confiando em operações de arquivo em vez de invocações de comando:
MYPID=1
cat "/proc/$MYPID/comm"
Você também pode usar awk em combinação com 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 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
Surpreendentemente, ninguém mencionou a opção -f (comando completo) para ps. Eu gosto de usá-la com -e (tudo) e canalizar os resultados para grep para que eu possa restringir a minha pesquisa.
ps -ef | grep <PID>
Isto também é muito útil para olhar para os comandos completos que alguém está a executar e que estão a levar muitos recursos no seu sistema. Isto irá mostrar-lhe as opções e argumentos passados para o comando.
Acho o método mais fácil de ser com o seguinte comando:
ps -awxs | grep pid
fez um script simples para encontrar PID e usar dentro de scripts bash… use com cautela!!
Screenshot:
André