Gibt es relativ einfache Optionen mit top, um einen bestimmten Prozess zu verfolgen?
Idealerweise durch Identifizierung des Prozesses anhand eines vom Menschen lesbaren Werts? zB chrome
oder java
.
Mit anderen Worten, ich möchte alle oben angegebenen typischen Informationen anzeigen, aber die Ergebnisse müssen nach den angegebenen Parametern gefiltert werden, d. H. 'chrome' oder 'java'
top | grep chrome
?ps -x | chrome
, um PID zu erhalten (lassen Sie PID gezeigt2034
) und danntop | grep 2034
top | grep chrome
hat einwandfrei funktioniert - danke!ps -x | process_name
, dass die PID anders war, wenn ich den Prozess erneut ausführte ursprüngliche PID würde es nicht identifizieren.Antworten:
Sie können einfach verwenden
grep
:Führen Sie den folgenden Befehl aus, um die gewünschte Ausgabe zu erhalten (ex-chrome):
Hier verwenden wir
grep
mit Pipelines|
sotop
&grep
parallel laufen;top
Ausgabe angrep
(als Eingabe) undgrep chrome
filtert übereinstimmende Zeilen,chrome
bis sietop
gestoppt werden.quelle
top
nur mit OP und möchte den Prozess basierend filterntop
.sleep 10 & top | grep sleep
Nach meiner anderen Antwort hier könnten Sie etwas tun wie:
quelle
top -p `pgrep "java"`
gibt mir den folgenden Fehler in einer Bash-Shelltop: -p requires argument
. top -ppgrep -d ',' "apache2"
hat für mich funktioniert, aber ich habe nicht wirklich verstanden, was der Befehl tat. Ist es eine Möglichkeit, mehrere Argumente nach oben einzugeben?pid
Listen-Komma getrennt eingeben, um zu funktionieren.Erläuterung:
top -p pid1,pid2
: zeige mehrere Prozessinformationen, die pid sollte durch getrennt werden,
pgrep -d "," java
: Gibt die Pids aller Java-Programme aus. Die Pids werden standardmäßig durch einen Zeilenumbruch getrennt. Verwenden Sie die-d ","
, um es,
wie oben erforderlich zu trennen .Wenn Sie Fehler wie sehen
top: -p argument missing
, bedeutet dies, dass kein Java-Programm ausgeführt wird, dh der pgrep hat keine Ausgabe.quelle
top -p
pgrep "java" ``. Dankeschön.pgrep
den Exit-Code überprüfen :pids="$(pgrep -d, java)" && top -p "$pids"
top
Drücken Sie gin OpenBSD einfach und geben Sie den Befehlsnamen ein, nach dem Sie filtern möchten.In
top
auf zB Ubuntu, drücken Sie ound geben Sie zum BeispielCOMMAND=chrome
zeigen , nur Einträge aus derCOMMAND
Spalte, die gleich sindchrome
.Lesen Sie unter Linuxes, die dieselbe
top
Implementierung wie Ubuntu verwenden, den Abschnitt FILTERING in a Window imtop
Handbuch.quelle
Andere gute Antworten wurden gegeben, aber ich habe vor einiger Zeit ein Skript erstellt, das ich ptop nannte und das mir gute Dienste leistet:
Dies unterstützt die Angabe mehrerer Prozessnamen (wie
ptop bash chrome
) und gibt eine schönere Fehlermeldung aus, falls keine Prozesse mit einem der angegebenen Namen ausgeführt werden.quelle
Wenn Sie
top
im Kontext bleiben und alle anderen Prozesse im Blick behalten möchten , können Sie auf drückenL
, um nach Ihrem Prozess zu suchen:Dies hebt jeden Prozess mit
chrome
im Namen hervor und ruft ihn auf. Mit&
zum nächsten Spiel wechseln.Sie können drücken
c
, um zwischen der Anzeige des Prozessnamens und des vollständigen Befehls zu wechseln.quelle
man top | less +/5d
Sie können auch einen Filter oben verwenden, um bestimmte Prozesse zu isolieren. Drücken Sie 'O', um die Filterabfrage aufzurufen. Geben Sie dann einen Filter ein, der als FIELD = value formatiert ist. Verwenden Sie zum Filtern aller tmux-Prozesse beispielsweise Folgendes:
Verwenden Sie '=', um die Filter zurückzusetzen. Siehe den Abschnitt mit dem Titel 'FILTERING' in der oberen Manpage.
quelle