209 votes

commande top -c sous linux pour filtrer les processus listés en fonction du nom du processus

top -c

Top liste tous les processus, il y a de bonnes options pour filtrer les processus par nom d'utilisateur en utilisant l'option -u mais je me demande s'il y a un moyen facile de filtrer les processus basés sur le nom du processus listé dans la colonne COMMAND de la sortie top.

Par exemple, je voudrais que top -some option -substring of processname et top affiche les pids ayant seulement cette sous-chaîne dans son nom de commande.

280voto

perreal Points 47912

Utilisation de pgrep pour obtenir les pid des lignes de commande correspondantes :

top -c -p $(pgrep -d',' -f string_to_match_in_cmd_line)

top -p s'attend à une liste de pids séparés par des virgules, nous utilisons donc -d',' dans pgrep. Le site -f dans pgrep lui fait correspondre la ligne de commande au lieu du nom du programme.

170voto

nos Points 102226

Elle peut se faire de manière interactive

Après avoir exécuté top -c , hit o et écrire un filtre sur une colonne, par exemple pour afficher les lignes dont la colonne COMMAND contient la chaîne foo, écrivez COMMAND=foo

Si vous voulez juste une sortie de base, cela peut être suffisant :

top -bc |grep name_of_process

135voto

Don Kirkby Points 12671

Vous pouvez ajouter des filtres à top pendant qu'il fonctionne. Il suffit d'appuyer sur le bouton o puis saisissez une expression de filtre.

Par exemple, pour surveiller tous les processus contenant la chaîne "java", utilisez l'expression de filtrage suivante COMMAND=java .

Vous pouvez ajouter plusieurs filtres en appuyant sur o encore.

Vous pouvez filtrer par utilisateur avec u . Effacer tous les filtres avec = .

14voto

La commande de @perreal fonctionne très bien ! Si vous oubliez, essayez en deux temps...

exemple : filtrez le haut pour afficher uniquement l'application appelée yakuake :

$ pgrep yakuake
1755

$ top -p 1755

Commandes interactives top utiles 'c' : bascule entre le chemin complet et le nom de la commande 'k' : tuer par PID 'F' : filtrer par... sélectionnez avec les flèches... puis appuyez sur 's' pour définir le tri.

la réponse ci-dessous est également bonne... Je la cherchais aujourd'hui mais je ne l'ai pas trouvée. Merci

9voto

Val Points 86

Après avoir cherché de nombreuses réponses sur StackOverflow, je n'ai pas trouvé de réponse adaptée à mes besoins.

Il s'agit de faire en sorte que la commande top continue à se rafraîchir avec un mot-clé donné, et que nous n'ayons pas à faire CTRL+C / top encore et encore lorsque de nouveaux processus se créent.

Ainsi, j'en fais un nouveau...

Voici la version sans réplique nécessaire.

__keyword=name_of_process; (while :; do __arg=$(pgrep -d',' -f $__keyword); if [ -z "$__arg" ]; then top -u 65536 -n 1; else top -c -n 1 -p $__arg; fi; sleep 1; done;)

Modifiez le __keyword et cela devrait fonctionner. (Ubuntu 2.6.38 testé)

2.14.2015 ajouté : La partie de la charge de travail du système est manquante avec le code ci-dessus. Pour les personnes qui se soucient de la partie "charge moyenne" :

__keyword=name_of_process; (while :; do __arg=$(pgrep -d',' -f $__keyword); if [ -z "$__arg" ]; then top -u 65536 -n 1; else top -c -n 1 -p $__arg; fi; uptime; sleep 1; done;)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X