web-dev-qa-db-fra.com

Comment obtenir un processus donné

Bonjour, j’ai cherché dans divers forums et ici aussi, j’ai pu trouver des réponses pour Linux et Mac mais je n’ai pas pu trouver de solution pour Unix et spécialement Korn Shell.

Comment obtenir le nom du processus (nom de la commande) à partir de l'ID de processus (pid)

Ci-dessous, référence trouvée dans SO Celui-ciEt celui-ci aussi

J'ai essayé en dessous de la commande

ps -eaf | awk '{ print substr($0, index($0, $9)) }'

La commande ci-dessus échoue à un moment où TIME est donné plutôt que Mois et Date (car dans ce cas, la chaîne ne comportera que 8 colonnes)

Toute suggestion aiderait.

40
gahlot.jaggs

Je pense qu'il est plus facile d'utiliser pgrep

$ pgrep bluetoothd
441

Sinon, vous pouvez utiliser awk:

ps -ef | awk '$8=="name_of_process" {print $2}'

Par exemple, si ps -ef a une ligne comme celle-ci:

root       441     1  0 10:02 ?        00:00:00 /usr/sbin/bluetoothd

Alors ps -ef | awk '$8=="/usr/sbin/bluetoothd" {print $2}' renvoie 441.


En ksh, pgrep est introuvable. et l'autre solution échoue au cas où La sortie ci-dessous provient de la commande ps jaggsmca325 7550 4752 0 11 sept./44 0:00 sqlplus dummy_user/dummy_password @ dummy_schema

Vérifions la dernière colonne ($NF), peu importe son numéro:

$ ps -ef | awk '$NF=="/usr/sbin/bluetoothd" {print $2}'
441

Si vous voulez faire correspondre des chaînes non exactes, vous pouvez utiliser ~ à la place:

$ ps -ef | awk '$NF~"bluetooth" {print $2}'
441
1906
67
fedorqui

Vous pouvez utiliser pidof pour obtenir tous les ID des processus en cours portant le nom p_name.
pidofp_name | tr ' ' '\n' (pour une liste verticale)
pkillp_name supprime tous les processus portant le nom p_name 
NB assurez-vous d'avoir la permission de tous les tuer :)

5
k-messaoudi

Si votre solution ps | awk échoue parce que la sortie de ps n'est pas celle que vous souhaitez, définissez-la ainsi:

ps -eaf -o pid,cmd | awk '/regex-to-match-command-name/{ print $1 }'
2
William Pursell
ps -C <the-name> -o etime=

Mon ps est de procps-ng.

0
numeric