web-dev-qa-db-fra.com

Obtenir des pids à partir du mot clé ps -ef | grep

Je veux utiliser ps -ef | grep "keyword" pour déterminer le pid d'un processus démon (il contient une chaîne unique dans ps -ef).

Je peux tuer le processus avec pkill keyword y a-t-il une commande qui retourne le pid au lieu de le tuer? (pidof ou pgrep ne fonctionne pas)

101
Dennis Ich

Vous pouvez utiliser pgrep tant que vous incluez les options -f. Ainsi, pgrep correspond aux mots-clés de la commande entière (y compris les arguments) au lieu du nom du processus.

pgrep -f keyword

De la page de manuel :

-f Le modèle ne correspond normalement qu'au nom du processus. Lorsque -f est défini, la ligne de commande complète est utilisée.


Si vous voulez vraiment éviter pgrep, essayez:

ps -ef | awk '/[k]eyword/{print $2}'

Notez le [] autour de la première lettre du mot clé. C'est une astuce utile pour éviter de faire correspondre la commande awk elle-même.

214
Shawn Chin

Essayer

ps -ef | grep "KEYWORD" | awk '{print $2}'

Cette commande devrait vous donner le PID des processus avec KEYWORD en eux. Dans ce cas, awk renvoie le contenu de la 2e colonne à partir de la sortie.

46
Lewis Norton

ps -ef | grep KEYWORD | grep -v grep | awk '{print $2}'

20
Vinayak

J'utilise

ps -C "keyword" -o pid=

Cette commande devrait vous donner un numéro PID.

8
Arksonic

Ceci est disponible sur linux: mot-clé pidof

6
dbrank0

Pour tuer un processus avec un mot clé spécifique, vous pouvez créer un alias dans ~/.bashrc (linux) ou ~/.bash_profile (mac).

alias killps="kill -9 `ps -ef | grep '[k]eyword' | awk '{print $2}'`"
1
swayamraina