comm semble tronquer la commande à 15 caractères. Utiliser à la commandplace le corrige.
Nemo
1
[Ubuntu 14.04.4 LTS] $ 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.
OmarOthman
3
En fait, commdonne le nom du binaire et commandretourne l'argument 0
robbie
45
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
Attention, le PO mentionne UNIX. Les UNIX n’implémentent pas tous le fichier Plan 9 spécifique au processus. Votre réponse ne concerne généralement que Linux.
Slhck
3
Bien que ce soit vrai, ils ont tagué la question "linux". Quiconque utilise un système d'exploitation UNIX non basé sur Linux sera assez habitué à devoir modifier les réponses pour répondre à ses besoins
Andrew White
14
Pour obtenir le chemin du programme en utilisant un certain pid, vous pouvez utiliser:
Cette commande m'a aidé plus que nécessaire, j'ai toute la ligne du processus qui a commencé. Avec un processus Java, avec la pscommande, tout ce que vous voyez est juste java, mais le reste des paramètres passés sera affiché complètement avec pmap.
Daniel Andrei Mincă
3
Vous pouvez également utiliser awk en combinaison avec ps
ps aux | awk '$2 == PID number for a process { print $0 }'
Ceci est instable car il sélectionnerait également les processus qui incluent le numéro n'importe où dans leur commande. Essayez de ps ax | grep 1voir si cela retourne vraiment le initprocessus, par exemple. (Dans mon cas, il retourne 119 lignes - ce qui n'est pas souhaitable.)
slhck
1
@slhck Modifié la réponse ... merci pour l'info .. ps -p 1 -o comm = est la meilleure option pour cette question.
Gangadhar
Nous n'avons pas besoin de deux exécutions pour conserver les en-têtes, mais plutôt de les utiliser 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, -pc'est mieux quand même.
dave_thompson_085
3
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:
[Ubuntu 14.04.4 LTS] cat /proc/1/comm=> init, pas / sbin / init. Sa réponse a la version longue incluse. Mais +1 quand même.
OmarOthman
2
É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.
Ne fonctionne pas sur BSD (y compris peut-être MacOSX? Je ne suis pas sûr). Même lorsqu'ils -e -fsont disponibles, ils greppeuvent produire de nombreuses correspondances fausses, par exemple, grep 33pid = 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 greplui - même. Tous (AFAIK) psont -p, donc juste ps -fp 33.
dave_thompson_085
0
Je trouve que la méthode la plus simple consiste à utiliser la commande suivante:
ps
ouls -l /proc/$PID/exe
ps -fp PID
montrera la commande complèteRéponses:
Sur tous les systèmes compatibles POSIX, et avec Linux, vous pouvez utiliser
ps
: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 6la source
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 etcommand
retourne l'argument 0Vous pouvez trouver le nom du processus ou la commande utilisée par le processus-id ou pid de
en faisant
Ici pid est le pid pour lequel vous voulez trouver le nom
For exmaple:
Pour trouver le nom du processus utilisé par le pid 2480 utilisé, vous pouvez
la source
Pour obtenir le chemin du programme en utilisant un certain pid, vous pouvez utiliser:
alternativement, vous pouvez utiliser:
la source
ps -a
liste tous les processus associés au terminal, cela ne prend aucune entrée.ps
version, çaprocps version 3.2.7
marche bien.Exemple:
la source
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.
la source
ps
commande, tout ce que vous voyez est justejava
, mais le reste des paramètres passés sera affiché complètement avecpmap
.Vous pouvez également utiliser awk en combinaison avec ps
exemple:
pour imprimer HEAD LINE, vous pouvez utiliser
la source
ps ax | grep 1
voir si cela retourne vraiment leinit
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:
la source
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.
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.
la source
-e -f
sont disponibles, ilsgrep
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 legrep
lui - même. Tous (AFAIK)ps
ont-p
, donc justeps -fp 33
.Je trouve que la méthode la plus simple consiste à utiliser la commande suivante:
la source
ps -p${pid}
, cela ramassera beaucoup de faux positifs - y compris legrep
soifait un script simple pour trouver PID et utiliser dans les scripts bash ...
utilisez avec prudence !!
Capture d'écran: http://pastebin.com/Cm9YH67U
André
la source