Comment obtenir pid donné le nom de processus
Salut j'ai cherché sur différents forums et ici, j'ai pu trouver quelques réponses pour Linux et Mac, mais pas en mesure de trouver la meilleure solution pour Unix et spécialement Korn Shell.
Comment obtenir le nom du processus (le nom de la commande) à partir de l'id de processus (pid)
En dessous de référence que j'ai trouvé de SI
Cette une
Et celui-ci aussi
J'ai essayé la commande ci-dessous
ps -eaf | awk '{ print substr($0, index($0, $9)) }'
Commande ci-dessus échoue à un point où le TEMPS est donné, plutôt que le Mois et le Jour (car dans ce cas il n'y aura que 8 colonnes en chaîne)
Toute suggestion serait de les aider.
- Non, je veux pid du processus de nom, il a été à tort type dans le titre
- Cette question est très spécifique à votre version d'unix, et a peu à voir avec la coquille. Veuillez inclure la sortie de
uname -a
. - Pour les utilisateurs de Mac qui se trouve à cette, voir aussi stackoverflow.com/questions/11546765/....
Vous devez vous connecter pour publier un commentaire.
Je pense que c'est plus facile à utiliser
pgrep
Sinon, vous pouvez utiliser
awk
:Par exemple, si
ps -ef
a une ligne comme:Puis
ps -ef | awk '$8=="/usr/sbin/bluetoothd" {print $2}'
retourne441
.Nous allons vérifier la dernière colonne (
$NF
), peu importe son nombre:Si vous voulez que la correspondance n'est pas exacte des chaînes, vous pouvez utiliser
~
à la place:jaggsmca325 7550 4752 0 Sep 11 pts/44 0:00 sqlplus dummy_user/dummy_password@dummy_schema
$NF
, vous pouvez également utiliser$(NF-1)
, etc. Vous pouvez utiliser$(NF-1)=="sshd:" && $NF=="jaggsmca325@pts/53"
grep "process$"
, comme$
signifie la fin de la ligne. Donner ensuite la chaîne de awk pour imprimer le 2ème enregistrement.pgrep
fonctionne sur Ubuntu 14.04. Un point à noter si vous êtes l'alimentation de la sortie dans un script, c'est que si plusieurs processus partagent le même nom, il imprime une liste de pid, un par ligne.Vous pouvez utiliser
pidof
pour obtenir tous les Id de processus en cours d'exécution avec le nomp_name
pidof
p_name | tr ' ' '\n'
(pour une verticale d'inscription)pkill
p_name
tuer tous les processus avec le nomp_name
NB assurez-vous que vous avez la permission de les tuer tous 🙂
Si votre
ps | awk
solution est de ne pas en cause la sortie deps
n'est pas ce que vous voulez, puis faire en sorte:ps
varie en fonction de votre plate-forme (mais je pense que-o
est standard). Consultez votre documentation pour voir comment manipuler les champs de sortie. (man ps
)ps
prend également en chargeo
(sans le-
) et--format
, en fonction de votre plate-forme.Mon ps est de procps-ng .
ps -C <process-name> -o user= | head -1
pour obtenir des processus de propriétaire (utilisateur)