Existe-t-il des options relativement strictes avec top pour suivre un processus spécifique?
Idéalement en identifiant le processus par une valeur lisible par l'homme? par exemple chrome
ou java
.
En d'autres termes, je veux voir toutes les informations typiques fournies par le haut, mais pour que les résultats soient filtrés aux paramètres fournis, c'est-à-dire. 'chrome' ou 'java'
top | grep chrome
?ps -x | chrome
pour obtenir pid (laissez pid affiché2034
) puistop | grep 2034
top | grep chrome
a fonctionné parfaitement - merci!ps -x | process_name
le PID, lorsque j'ai exécuté le processus à nouveau, le PID était différent et par conséquent Le PID d'origine ne l'identifierait pas.Réponses:
Vous pouvez simplement utiliser
grep
:Exécutez la commande suivante pour obtenir le résultat souhaité (ex-chrome):
Ici, nous utilisons
grep
des pipelines|
pour quetop
&grep
run parallèle;top
sortie donnée àgrep
(en entrée) etgrep chrome
filtre les lignes correspondanteschrome
jusqu’à l’top
arrêt.la source
top
que et OP veulent filtrer le processus en fonctiontop
.sleep 10 & top | grep sleep
De mon autre réponse ici , vous pourriez faire quelque chose comme,
la source
top -p `pgrep "java"`
me donne l'erreur suivante dans un shell bashtop: -p requires argument
. top -ppgrep -d ',' "apache2"
a fonctionné pour moi, mais je ne comprenais pas vraiment ce que la commande faisait. Est-ce une façon de nourrir plusieurs arguments en haut?pid
liste séparée par une virgule pour fonctionner.Explication:
top -p pid1,pid2
: afficher plusieurs informations de processus, le pid doit être séparé par,
pgrep -d "," java
: imprimer les pids de tous les programmes java, les pids sont séparés par une nouvelle ligne par défaut. utilisez le-d ","
pour le séparer,
comme requis par le haut.Si vous voyez une erreur similaire
top: -p argument missing
, cela signifie qu'aucun programme Java n'est en cours d'exécution, c'est-à-dire que le pgrep n'a pas de sortie.la source
top -p
pgrep "java" `` seulement. Merci.pgrep
le code de sortie:pids="$(pgrep -d, java)" && top -p "$pids"
Sous OpenBSD
top
, appuyez simplement sur get entrez le nom de la commande sur laquelle vous souhaitez filtrer.Par
top
exemple dans Ubuntu, appuyez sur oet entrez, par exemple,COMMAND=chrome
pour afficher uniquement les entrées de laCOMMAND
colonne qui sont égales àchrome
.Sous Linux utilisant la même
top
implémentation que Ubuntu, lisez la section FILTERING in a Window dutop
manuel.la source
D'autres bonnes réponses ont été fournies, mais j'ai créé un script il y a quelque temps, que j'ai nommé ptop, qui me sert bien:
Ceci prend en charge plusieurs noms de processus à spécifier (comme
ptop bash chrome
) et fournit un message d'erreur plus agréable au cas où il n'y aurait pas de processus avec l'un des noms spécifiés en cours d'exécution.la source
Si vous souhaitez rester
top
et conserver tous les autres processus en vue du contexte, vous pouvez appuyer surL
pour rechercher votre processus:Cela mettra en évidence tout processus avec
chrome
son nom et le mettra en évidence . Utilisez&
pour aller au prochain match.Vous pouvez appuyer sur
c
pour afficher le nom du processus et la commande complète.la source
man top | less +/5d
Vous pouvez également utiliser un filtre en haut pour isoler des processus spécifiques. Appuyez sur 'O' pour afficher l'invite du filtre. Tapez ensuite un filtre au format FIELD = value. Par exemple, pour filtrer tous les processus tmux, utilisez:
Utilisez '=' pour réinitialiser les filtres. Reportez-vous à la section intitulée "FILTRAGE" dans la page de manuel supérieure.
la source