2013-08-17 07:12:47 +0000 2013-08-17 07:12:47 +0000
280
280

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 ?

Réponses (10)

308
308
308
2013-08-17 08:21:51 +0000

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

53
53
53
2013-08-17 08:04:46 +0000

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
15
15
15
2015-04-18 02:16:04 +0000

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]

8
8
8
2017-05-27 04:28:29 +0000

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
8
8
8
2016-05-06 00:14:20 +0000
# 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
3
3
3
2015-08-30 23:31:50 +0000

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"
3
3
3
2013-08-17 09:32:59 +0000

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
2
2
2
2016-02-23 21:47:17 +0000

É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.

0
0
0
2016-11-21 09:48:46 +0000

Je trouve que la méthode la plus simple consiste à utiliser la commande suivante :

ps -awxs | grep pid
0
0
0
2016-12-26 15:08:43 +0000

a réalisé un script simple pour trouver le PID et l'utiliser dans des scripts bash… à utiliser avec précaution !!

Capture d'écran :

http://pastebin.com/Cm9YH67U

André