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.

7voto

user1587329 Points 91

Sur htop vous pouvez simplement chercher avec

/process-name

1voto

Jester Points 1186

J'ai fini par utiliser un shell script avec le code suivant :

#!/bin/bash

while [ 1 == 1 ]
do
    clear
    ps auxf |grep -ve "grep" |grep -E "MSG[^\ ]*" --color=auto
    sleep 5
done

1voto

Manwe Points 131

La plupart des réponses échouent ici, lorsque la liste des processus dépasse 20 processus. C'est-à-dire top -p limite d'option. Pour ceux qui ont un ancien top qui ne supporte pas le filtrage avec o Voici un exemple de script permettant d'obtenir une sortie plein écran/console (les informations de synthèse sont absentes de cette sortie).

__keyword="YOUR_FILTER" ; ( FILL=""; for i in  $( seq 1 $(stty size|cut -f1 -d" ")); do FILL=$'\n'$FILL; done ;  while :; do HSIZE=$(( $(stty size|cut -f1 -d" ")  - 1 ));  (top -bcn1 | grep "$__keyword"; echo "$FILL" )|head -n$HSIZE; sleep 1;done )

Quelques explications

__keyword = your grep filter keyword
HSIZE=console height
FILL=new lines to fill the screen if list is shorter than console height
top -bcn1 = batch, full commandline, repeat once

1voto

ecp Points 133

Pour tous ceux qui sont sur un Mac, où top ne supporte pas le type de filtrage montré dans les autres réponses (et les args pgrep sont légèrement différents)... Cette fonction lancera top pour les processus correspondant au modèle dans le premier argument (selon pgrep), et avec tous les autres arguments passés à top.

function topnamed() {
    name=$1
    shift
    top -pid $(pgrep -d ' -pid ' -fi "$name") 99999999 $@
}

(Le "i" dans "-fi" le rend insensible à la casse).

Exemple de base montrant tout processus "python" :

topnamed python

Exemple avec des arguments supplémentaires pour top :

topnamed python -o mem

Sauf erreur de ma part, pgrep (du moins dans la version actuelle de MacOS) ajoute un délimiteur de fin de ligne, même si la page de manuel indique qu'il doit être "imprimé entre chaque". Ainsi, le 99999999 à la fin est une valeur fictive pour éviter qu'il n'explose. (Il y a peut-être une meilleure solution de contournement).

Elle présente l'inconvénient (mentionné dans d'autres réponses) de n'inclure que les processus au moment du lancement.

0voto

Satish Points 3331

Et ça ?

top -c -p <PID>

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