GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So grep ps-Ausgabe mit Headern

Lösung 1:

ps -ef | egrep "GMC|PID"

Ersetzen Sie „GMC“ und ps Schalter nach Bedarf.

Beispielausgabe:

[email protected]:~$ ps -ef | egrep "disk|PID"

UID        PID  PPID  C STIME TTY          TIME CMD
paremh1  12501 12466  0 18:31 pts/1    00:00:00 egrep disk|PID
root     14936     1  0 Apr26 ?        00:02:11 /usr/lib/udisks/udisks-daemon
root     14937 14936  0 Apr26 ?        00:00:03 udisks-daemon: not polling any devices

Lösung 2:

Dank geekosaur möchte ich diesen Befehl für Ihre Anforderungen verwenden, anstatt einen separaten Befehl:

ps -ef | head -1; ps -ef | grep "your-pattern-goes-here"

Das Schwierige ist, das ";" zu verwenden. von der Shell unterstützt, um den Befehl zu verketten.

Lösung 3:

Die zweite Spalte ist die Prozess-ID; 4. ist der Zeitpunkt, an dem der Prozess erstellt wurde (dies ist normalerweise die Zeit, zu der Ihr Programm gestartet wurde, aber nicht immer; betrachten Sie execve() und Freunde); 6. ist die verbrauchte CPU-Zeit. Es läuft also seit 8 Tagen und verbraucht fast 7 Tage CPU-Zeit, was ich als besorgniserregend erachte.

Den Header in denselben Aufruf zu bekommen, ist bestenfalls schwierig; Ich würde einfach ein separates ps | head -1 machen . Sie könnten die Verwendung von ps in Betracht ziehen eigene Auswahlmethoden oder so etwas wie pgrep statt grep , das nicht wirklich dafür ausgelegt ist, Header durchzulassen.

Lösung 4:

Die egrep-Lösung ist einfach und nützlich, aber Sie sind natürlich darauf angewiesen, dass der Header immer 'PID' enthält (eine mehr als vernünftige Annahme) und der gleiche String nicht anderswo vorkommt. Ich schätze, das reicht für Ihre Bedürfnisse, aber falls jemand eine Alternative möchte, gibt es sed.

Mit Sed können Sie einfach sagen:"Drucke die erste Zeile, dann jede Zeile, die das Muster enthält". Zum Beispiel:

ps auxwww | sed -n '1p; /PROCESS_NAME_TO_SEARCH/p;'

Fügen Sie /sed -n/d; hinzu um sed selbst herauszufiltern:

ps auxwww | sed -n '1p; /sed -n/d; /PROCESS_NAME_TO_SEARCH/p;'

Lösung 5:

einfachere Alternative:ps -ef | { head -1; grep GMC; }

Ersetzen Sie die Zahl durch die Anzahl der Zeilen, auf denen Ihre Kopfzeile angezeigt wird.


Linux
  1. Wie führe ich Grep mit mehreren und Mustern aus?

  2. Wie sortiere ich die Ausgabe nach Größe?

  3. Wie hebt man ein Wort in der Ausgabe von „Katze“ hervor?

  4. Wie starte ich Multithread-Grep im Terminal?

  5. Wie grep ich rekursiv?

So schließen Sie in Grep aus

Wie man mit der Farbausgabe umgeht

Wie verkettet man mehrere Ausgabezeilen zu einer Zeile?

Wie grep \n in Datei

Wie kann ich die Ausgabe eines Shell-Befehls durchlaufen?

So durchsuchen Sie Linux-Manpages (z. B. mit grep)