6 votes

Comment sélectionner les processus par nom de commande en utilisant ps dans Mac OS X

Sous Linux, j'utilise ps -C command_name pour sélectionner les processus du nom de la commande spécifiée. Mais cela ne fonctionne pas sous Mac OS X. J'ai lu attentivement la page de manuel de ps, mais je ne trouve aucune option pour faire cela.

Quelqu'un sait-il s'il existe un moyen de sélectionner des processus spécifiques par nom de commande en utilisant ps sous Mac OS X ?

0 votes

Essayer ps | grep command_name

0 votes

ps | grep command_name comprendra le ps | grep command_name même.

1 votes

ps | grep command_name | grep -v grep est la solution la plus simple. /cc @oli

3voto

ChrisA Points 2991

Dans le cas général, il semble que vous ne puissiez pas vraiment le faire sans utiliser grep comme aide ou sans passer par une deuxième commande linux pour vous aider. Si vous essayez de le faire en lançant un processus à partir d'un autre langage, par exemple Java, vous devrez peut-être éviter d'utiliser des shellisms et donc le faire en une seule commande. Considérez donc pgrep comme alternative. Par exemple, pour lister tous les processus java :

pgrep java

2voto

diegogs Points 624

Une façon simple de filtrer la sortie de ps est d'utiliser un outil qui peut généralement filtrer les entrées, grep .

Pour ce faire, il suffit de tuyau la sortie de ps dans grep, comme ça :

oliver@cloud:~$ ps | grep bash
31131 pts/0    00:00:00 bash

Au cas où vous seriez sur la liste tous vous rencontrerez rapidement un problème :

oliver@cloud:~$ ps a | grep bash
 2729 pts/0    S+     0:00 grep bash
31131 pts/0    Ss     0:00 -bash

Maintenant, il retourne grep lui-même aussi ! Comment le réparer ?

En utilisant simplement grep encore une fois pour filtrer le résultat excédentaire :

oliver@cloud:~$ ps a | grep bash | grep -v grep
31131 pts/0    Ss     0:00 -bash

0 votes

Merci, @slkch a déjà donné cette réponse, mais j'accepte la vôtre quand même.

1voto

PaSe Points 11

<- OSX -> Pour obtenir le PID du binaire en cours d'exécution appelé Humans en faisant correspondre le nom du binaire à celui de la COMMANDE.

helios:~ TimberWolf$ killall -s Humans

-> Juste le numéro

helios:~ TimberWolf$ killall -s Humans | tr -d [:alpha :][:space :]-

-> Utilisez PID avec la commande ps pour des détails plus raffinés tels que la priorité du binaire.

helios:~ TimberWolf$ ps killall -s Humans | tr -d [:alpha:][:space:]-

0 votes

De man killall : -s Montrer seulement ce qui serait fait, mais n'envoyer aucun signal.

0 votes

J'utilise une modification de votre commande : killall -s Humans|awk '{print $3}'

0voto

Dave Swersky Points 25958

J'ai rencontré le même problème. Voici une solution, pas totalement satisfaisante :

ps -p `pidof <command_name> | tr ' ' ','`

Cela ne fonctionne pas toujours (par exemple, lorsque le nom de la commande est en fait un appel à un interpréteur), et c'est plutôt laid. J'espère que cela pourra donner des idées et apporter de meilleures solutions !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X