Si je connais le numéro PID d'un processus, comment puis-je obtenir son nom ?
Si je possède le numéro PID d'un processus (sur une machine UNIX), comment puis-je trouver le nom du processus qui lui est associé ?
Que dois-je faire ?
Si je possède le numéro PID d'un processus (sur une machine UNIX), comment puis-je trouver le nom du processus qui lui est associé ?
Que dois-je faire ?
Sur tous les systèmes compatibles POSIX, et avec Linux, vous pouvez utiliser ps
:
ps -p 1337 -o comm=
Ici, le processus est sélectionné par son PID avec -p
. L'option -o
spécifie le format de sortie, comm
signifiant le nom de la commande.
Voir aussi : ps
- The Open Group Base Specifications Issue 6
Vous pouvez trouver le nom du processus ou la commande utilisée par le process-id ou pid de
/proc/pid/cmdline
en faisant
cat /proc/pid/cmdline
Ici pid est le pid pour lequel vous voulez trouver le nom Par exemple :
# ps aux
................
................
user 2480 0.0 1.2 119100 12728 pts/0 Sl 22:42 0:01 gnome-terminal
................
................
Pour trouver le nom du processus utilisé par pid 2480 vous utilisez can
# cat /proc/2480/cmdline
gnome-terminal
Pour obtenir le chemin du programme en utilisant un certain pid vous pouvez utiliser :
ps ax|egrep "^ [PID]"
alternativement vous pouvez utiliser :
ps -a [PID]
Vous pouvez utiliser pmap. Je cherche le PID 6649. Et je coupe les détails supplémentaires du processus.
$ pmap 6649 | head -1
6649: /usr/lib64/firefox/firefox
# ls -la /proc/ID_GOES_HERE/exe
Exemple :
# ls -la /proc/1374/exe
lrwxrwxrwx 1 chmm chmm 0 Mai 5 20:46 /proc/1374/exe -> /usr/bin/telegram-desktop
Similaire à slhck’s Answer , mais s'appuyant sur des opérations de fichiers au lieu d'invocations de commandes :
MYPID=1
cat "/proc/$MYPID/comm"
Vous pouvez également utiliser awk en combinaison avec ps
ps aux | awk '$2 == PID number for a process { print $0 }'
exemple :
root@cprogrammer:~# ps aux | awk '$2 == 1 { print $0 }'
root 1 0.0 0.2 24476 2436 ? Ss 15:38 0:01 /sbin/init
pour imprimer HEAD LINE vous pouvez utiliser
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
Étonnamment, personne n'a mentionné l'option -f (commande complète) pour les ps. J'aime l'utiliser avec -e (tout) et transmettre les résultats à grep pour pouvoir affiner ma recherche.
ps -ef | grep <PID>
C'est également très utile pour examiner les commandes complètes que quelqu'un exécute et qui prennent beaucoup de ressources sur votre système. Cela vous montrera les options et les arguments passés à la commande.
Je trouve que la méthode la plus simple consiste à utiliser la commande suivante :
ps -awxs | grep pid
a réalisé un script simple pour trouver le PID et l'utiliser dans des scripts bash… à utiliser avec précaution !!
Capture d'écran :
André