GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire il grep dell'output di ps con le intestazioni

Soluzione 1:

ps -ef | egrep "GMC|PID"

Sostituisci "GMC" e ps commuta secondo necessità.

Esempio di output:

[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

Soluzione 2:

Grazie a geekosaur, vorrei usare questo comando per le tue richieste, piuttosto che un comando separato:

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

Il trucco è usare il ";" supportato dalla shell per concatenare il comando.

Soluzione 3:

La seconda colonna è l'id del processo; Il 4° è quando il processo è stato creato (di solito è l'ora in cui il tuo programma è stato avviato, ma non sempre; considera execve() e amici); Il sesto è la quantità di tempo della CPU consumata. Quindi è in esecuzione da 8 giorni e ha utilizzato quasi 7 giorni di CPU, cosa che considererei preoccupante.

Ottenere l'intestazione nella stessa invocazione è nella migliore delle ipotesi complicato; Farei solo un ps | head -1 separato . Potresti prendere in considerazione l'utilizzo di ps i metodi di selezione propri di o qualcosa come pgrep invece di grep , che in realtà non è progettato per passare le intestazioni.

Soluzione 4:

La soluzione egrep è semplice e utile, ma ovviamente dipendi dall'intestazione che contiene sempre 'PID' (un presupposto più che ragionevole, però) e la stessa stringa che non ricorre altrove. Immagino che questo sia sufficiente per le tue esigenze, ma nel caso qualcuno voglia un'alternativa c'è sed.

Sed ti lascia semplicemente dire "stampa la prima riga, quindi qualsiasi riga contenente il modello". Ad esempio:

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

Aggiungi /sed -n/d; per filtrare sed stesso:

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

Soluzione 5:

alternativa più semplice:ps -ef | { head -1; grep GMC; }

sostituisci il numero con il numero di righe su cui è visualizzata la tua intestazione.


Linux
  1. Come avviare Grep multi-thread nel terminale?

  2. Come Grep Lines che non iniziano con "#" o ";"?

  3. Come faccio a grep in modo ricorsivo?

  4. Come acquisire l'output di un comando top in un file in Linux?

  5. Come grep \n nel file

Come escludere in Grep

Come concatenare più righe di output in una riga?

Come reindirizzare l'output da grep a cp?

Come passare l'output del comando come più argomenti a un altro comando

Come cercare le pagine man di Linux (ad esempio con grep)

iftop - come generare un file di testo con il suo output?