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?
ps -fp PID
montrera la commande complète
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?
ps -fp PID
montrera la commande complète
Réponses:
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' -o
option spécifie le format de sortie, comm
c'est-à-dire le nom de la commande.
Voir aussi: ps
- Spécifications du groupe ouvert Open Issue 6
command
place le corrige.
$ ps -p 1 -o comm=
init $ ps -p 1 -o command=
/ sbin / init; ce qui signifie qu'il ne s'agit pas d'environ 15 caractères, peut-être juste du nom du binaire par rapport à son chemin complet.
comm
donne le nom du binaire et command
retourne l'argument 0
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
For exmaple:
# 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
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]
ps -a
liste tous les processus associés au terminal, cela ne prend aucune entrée.
ps
version, ça procps version 3.2.7
marche bien.
# 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
readlink /proc/1337/exe
. readlink - affiche les liens symboliques résolus ou les noms de fichiers canoniques.
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
ps
commande, tout ce que vous voyez est juste java
, mais le reste des paramètres passés sera affiché complètement avec pmap
.
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
ps ax | grep 1
voir si cela retourne vraiment le init
processus, par exemple. (Dans mon cas, il retourne 119 lignes - ce qui n'est pas souhaitable.)
ps aux | awk 'NR==1 || $2==PID'
- et nous n'avons pas besoin de le dire, {print $0}
car il s'agit de la valeur par défaut. Mais comme vous l'avez dit, -p
c'est mieux quand même.
Simmilar à la réponse de slhck , 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"
cat /proc/1/comm
=> init, pas / sbin / init. Sa réponse a la version longue incluse. Mais +1 quand même.
É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 qui consomme beaucoup de ressources sur votre système. Cela vous montrera les options et les arguments passés à la commande.
-e -f
sont disponibles, ils grep
peuvent produire de nombreuses correspondances fausses, par exemple, grep 33
pid = 933 ou 339, ppid = 33 ou 933 ou 339, une utilisation de 33 secondes ou 33 minutes, ou un nom de programme ou un argument contenant 33, y compris le grep
lui - même. Tous (AFAIK) ps
ont -p
, donc juste ps -fp 33
.
Je trouve que la méthode la plus simple consiste à utiliser la commande suivante:
ps -awxs | grep pid
ps -p${pid}
, cela ramassera beaucoup de faux positifs - y compris le grep
soi
fait un script simple pour trouver PID et utiliser dans les scripts bash ...
utilisez avec prudence !!
Capture d'écran: http://pastebin.com/Cm9YH67U
André
ps
ouls -l /proc/$PID/exe