Oberster Befehl - So verkleinern Sie die angezeigten Spalten

17

Können wir eine bestimmte Spalte in einem Top-Kommando bekommen, zum Beispiel interessiert mich nur die Spalte Speicherauslastung und CPU-Auslastung.

Wie reduziere ich die angezeigten Spalten des Befehls top auf die beiden obigen Spalten?

Surya
quelle
3
Welches Betriebssystem? Welche topVariante? Es gibt Dutzende von Top-Implementierungen.
Stéphane Chazelas
Bitte geben Sie Ihr Betriebssystem und Ihre Top-Version an ( top -h).
slm

Antworten:

19

HINWEIS: Angenommen, Sie haben diese Version von top(procps) . Sie können mit diesem Befehl überprüfen:

$ top --version
    top: procps version 3.2.8
usage:  top -hv | -bcisSH -d delay -n iterations [-u user | -U user] -p pid [,pid ...]

procps ist oft die Version von topFedora / CentOS / RHEL und anderen Varianten.

Spalten wechseln

Wenn Sie in der Manpage nach suchen, topsehen Sie einen Abschnitt mit dem Titel: "2b. Spalten AUSWÄHLEN und BESTELLEN". Es gibt Tastaturkürzel zum Umschalten der Sichtbarkeit für die verschiedenen Felder / Spalten.

Beispielsweise:

  f,o     . Fields/Columns: 'f' add or remove; 'o' change display order
  F or O  . Select sort field
  <,>     . Move sort field: '<' next col left; '>' next col right

Sie können den Schlüssel verwenden , fwährend in topauf einem sekundären Bildschirm zu bekommen , wo Sie können festlegen , welche Spalten sichtbar oder nicht umgeschaltet werden sollte:

Beispielsweise:

Current Fields:  ANOPQRSTUVbcdefgjlmyzWHIKX  for window 3:Mem
Toggle fields via field letter, type any other key to return 

* A: PID        = Process Id                                      * W: S          = Process Status
* N: %MEM       = Memory usage (RES)                              * H: PR         = Priority
* O: VIRT       = Virtual Image (kb)                              * I: NI         = Nice value
* P: SWAP       = Swapped size (kb)                               * K: %CPU       = CPU usage
* Q: RES        = Resident size (kb)                              * X: COMMAND    = Command name/line
* R: CODE       = Code size (kb)
...

Es gibt noch mehr, dies sind nur Beispiele. Wenn Sie mit dem Umschalten der Spalten fertig sind, verlassen Sie Escden Auswahlbildschirm mit.

Konfiguration wird gespeichert

Sie können das Shift+ verwenden W, um Ihre Änderungen zu speichern, damit sie die Standardeinstellungen sind:

  W         Write configuration file

Die Datei wird hier gespeichert $HOME/.toprcund sieht folgendermaßen aus:

$ more .toprc 
RCfile for "top with windows"       # shameless braggin'
Id:a, Mode_altscr=0, Mode_irixps=1, Delay_time=1.000, Curwin=2
Def fieldscur=AEHIoqTWKNMBcdfgjpLrsuvyzX
    winflags=129016, sortindx=19, maxtasks=0
    summclr=2, msgsclr=5, headclr=7, taskclr=7
Job fieldscur=ABcefgjlrstuvyzMKNHIWOPQDX
    winflags=63416, sortindx=13, maxtasks=0
    summclr=6, msgsclr=6, headclr=7, taskclr=6
Mem fieldscur=ANOPQRSTUVbcdefgjlmyzWHIKX
    winflags=65464, sortindx=13, maxtasks=0
    summclr=5, msgsclr=5, headclr=4, taskclr=5
Usr fieldscur=ABDECGfhijlopqrstuvyzMKNWX
    winflags=65464, sortindx=12, maxtasks=0
    summclr=3, msgsclr=3, headclr=2, taskclr=7

Weitere Informationen finden Sie in Abschnitt 5 der Manpage unter "5. DATEIEN".

slm
quelle
Gibt es eine Möglichkeit, die Spalten / Felder über ein Befehlszeilenflag zu ändern? Dies wäre sehr nützlich, um beispielsweise die Top-Qualität auf verschiedenen Maschinen zu überprüfen und eine standardisierte Ausgabe zu erhalten.
Naught101
@ naught101 - Wenn Sie eine neue Frage haben, stellen Sie sie auf der Hauptseite. Kommentare sind nicht wirklich dafür gedacht.
slm
2

[Centos-6 | Ubuntu 12.10] Dieser Cmd-Druck 4 Top-Prozesse sortiert nach CPU-AUSGABE

top -bn 1 | grep "^ " | awk '{ printf("%-8s  %-8s  %-8s\n", $9, $10, $12); }' | head -n 5

Ausgabe

%CPU      %MEM      COMMAND
7.7       0.2       top
0.0       0.3       init
0.0       0.0       kthreadd
0.0       0.0       migration/0

Anmerkung: Überschrift -n 5 statt 4, da wir auch den Spaltennamen haben

Spalten $ 9, $ 10, $ 12 bedeuten CPU, MEM, COMMAND. Verwenden Sie den Befehl 'top', um die Spaltennummern abzurufen

Nach SPEICHERNUTZUNG sortieren (Ihr 'Top' muss -m unterstützen, um dies auszuführen)

# this work on my centos-6 machine, NOT work on my Ubuntu 12.10
top -m -bn 1 | grep "^ " | awk '{ printf("%-8s  %-8s  %-8s\n", $9, $10, $12); }' | head -n 5
Dampfer
quelle
Welche Version von top ist das?
SLM
Ich habe Centos-6.4 verwendet. Der Befehl top auf Ubuntu unterstützt -m nicht zum Sortieren der Speichernutzung.
Dampfer
Interessant, ich bin auf Fedora (14), ich bekomme die Top-Version von procps. Ich habe es nur zweimal überprüft und auf CentOS 5 + 6 verwenden sie auch Top-Procps. Ihr Befehl hat bei F14 nicht funktioniert. Es funktioniert jedoch unter CentOS 5 + 6. Nur eine Information für alle, die auf diesen Thread stoßen!
SLM
1

im json-Format anzeigen und auch Header entfernen,

top -bn 1 | grep "^ " | awk '{ printf("%s%s%s\n","{CPU:"$9",","MEM:"$10",","CMD:"$12"}"); }' | head -n 6 | tail -n +2

Ausgabe wie unten,

{CPU:6.4,MEM:0.3,CMD:gnome-terminal}
{CPU:6.4,MEM:1.9,CMD:chrome}
{CPU:0.0,MEM:0.0,CMD:init}
{CPU:0.0,MEM:0.0,CMD:kthreadd}
{CPU:0.0,MEM:0.0,CMD:ksoftirqd/0}
So M
quelle
Sie grep | awk | head | tailkönnen zu einer einzigen verschmolzen werden awk.
Roaima
0

Befehlszeilenkonfiguration
Ich wollte nicht meinen gesamten Benutzer durch Überschreiben des Benutzers beeinträchtigen .toprc, also kam ich auf die Idee, eine separate Konfiguration pro Anwendungsfall zu haben.
Sie können topeine benutzerdefinierte Konfigurationsdatei anstelle der im Ausgangsverzeichnis Ihres Benutzers verwenden.
Ändern Sie einfach die HOMEVariable in ein benutzerdefiniertes Verzeichnis, das die .toprcDatei für Ihre Anforderungen enthält.

# TOPRC_PROFILE_DIRECTORY contains .toprc (or can be created by saving using shift+w after configuring using keybindings) 
TOPRC_PROFILE_DIRECTORY="<your-directory>"
HOME="$TOPRC_PROFILE_DIRECTORY" top
Thomas
quelle