web-dev-qa-db-fra.com

Si je connais le numéro PID d'un processus, comment puis-je obtenir son nom?

Si j'ai le numéro PID d'un processus (sur une machine UNIX), comment puis-je connaître le nom de son processus associé?

Que dois-je faire?

239
AndreaNobili

Sur tous les systèmes compatibles POSIX, et sous 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 - Les spécifications de base de Open Group, Numéro 6

256
slhck

Vous pouvez trouver le nom du processus ou la commande utilisée par le processus-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 le pid 2480 utilisé, vous pouvez

# cat /proc/2480/cmdline 

 gnome-terminal
45
Stormvirux

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]

 enter image description here

13
Pedro Lobito
# 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

Vous pouvez utiliser pmap. Je cherche le PID 6649. Et je coupe les détails du processus.

$ pmap 6649 | head -1
6649:   /usr/lib64/firefox/firefox
8
Mike Studer

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
3
Gangadhar

Similaire à slack Answer , mais en s'appuyant sur des opérations sur les fichiers plutôt que sur des appels de commandes:

MYPID=1
cat "/proc/$MYPID/comm"
3
ThorSummoner

Étonnamment, personne n’a mentionné l’option -f (commande complète) pour ps. J'aime l'utiliser avec -e (tout) et diriger les résultats vers grep afin de pouvoir affiner ma recherche.

ps -ef | grep <PID>

Ceci est également très utile pour consulter les commandes complètes exécutées par une personne et qui utilisent beaucoup de ressources sur votre système. Cela vous montrera les options et les arguments passés à la commande.

2
jdelaporte

fait un script simple pour trouver PID et utiliser dans les scripts bash ...
utiliser avec précaution!!

Capture d'écran:
 Screenshot

http://Pastebin.com/Cm9YH67U

André

0
André Verwijs

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

ps -awxs | grep pid
0
user666282