Se conosco il numero PID di un processo, come posso sapere il suo nome?
Se ho il numero PID di un processo (su una macchina UNIX), come posso sapere il nome del processo associato?
Cosa devo fare?
Se ho il numero PID di un processo (su una macchina UNIX), come posso sapere il nome del processo associato?
Cosa devo fare?
Su tutti i sistemi conformi a POSIX, e con Linux, è possibile utilizzare ps
:
ps -p 1337 -o comm=
Qui, il processo è selezionato dal suo PID con -p
. L'opzione -o
specifica il formato di uscita, comm
che significa il nome del comando.
Vedi anche: ps
- L'Open Group Base Specifications Issue 6
Potete trovare il nome del processo o il comando usato dal processo-id o pid da
/proc/pid/cmdline
facendo
cat /proc/pid/cmdline
Qui pid è il pid per il quale volete trovare il nome Per esempio:
# ps aux
................
................
user 2480 0.0 1.2 119100 12728 pts/0 Sl 22:42 0:01 gnome-terminal
................
................
Per trovare il nome del processo usato da pid 2480 potete usare
# cat /proc/2480/cmdline
gnome-terminal
Per ottenere il percorso del programma utilizzando un certo pid si può usare:
ps ax|egrep "^ [PID]"
in alternativa si può usare:
ps -a [PID]
È possibile utilizzare pmap. Sto cercando PID 6649. E tagliando i dettagli del processo extra.
$ pmap 6649 | head -1
6649: /usr/lib64/firefox/firefox
# ls -la /proc/ID_GOES_HERE/exe
Esempio:
# ls -la /proc/1374/exe
lrwxrwxrwx 1 chmm chmm 0 Mai 5 20:46 /proc/1374/exe -> /usr/bin/telegram-desktop
Simile a slhck’s Answer , ma basandosi su operazioni di file invece che su invocazioni di comandi:
MYPID=1
cat "/proc/$MYPID/comm"
È possibile utilizzare awk anche in combinazione con ps
ps aux | awk '$2 == PID number for a process { print $0 }'
esempio:
root@cprogrammer:~# ps aux | awk '$2 == 1 { print $0 }'
root 1 0.0 0.2 24476 2436 ? Ss 15:38 0:01 /sbin/init
per stampare HEAD LINE è possibile utilizzare
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
Sorprendentemente, nessuno ha menzionato l'opzione -f (comando completo) per ps. A me piace usarla con -e (tutto) e convogliare i risultati a grep in modo da poter restringere la mia ricerca.
ps -ef | grep <PID>
Questo è anche molto utile per guardare i comandi completi che qualcuno sta eseguendo e che stanno richiedendo molte risorse al vostro sistema. Questo vi mostrerà le opzioni e gli argomenti passati al comando.
Trovo il metodo più semplice con il seguente comando:
ps -awxs | grep pid
ha fatto un semplice script per trovare PID e utilizzare all'interno di script bash… utilizzare con cautela!
Screenshot:
André