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.

0voto

user772266 Points 89

Cette attente script filtrera les processus par nom et montrera les processus nouvellement créés. Il s'agit essentiellement d'automatiser l'interaction de l'utilisateur avec top en envoyant 'o' et 'COMMMAND=mon_programme' pour vous. similaire à @nos Réponse.

fichier : topname.exp

#!/usr/bin/expect -- 

if {[llength $argv] < 1 } {
  send_user "Usage: topname process_name top_cmd_args \n"
  exit 1
}
set keyword [lindex $argv 0]

spawn top {*}[lrange $argv 1 end]

expect {

    -re .
     {
        send "o\r"
        expect "*add filter*"
        send "COMMAND=${keyword}\r"
        interact
    }

}

Donc vous l'utiliseriez comme :

./topname.exp mon_programme

./topname.exp java # this filters java processes

Il a également passé d'autres drapeaux que top accepte comme -u par exemple.

./topname.exp java -u Root # this filters java processes by root user

./topname.exp java -u Root -d 1 # this filters java processes by root user and delay top update by 1 second

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