GNU/Linux >> Linux Esercitazione >  >> Linux

Come ottenere pgrep per visualizzare le informazioni complete sul processo

Soluzione 1:

pgrep Le opzioni di output di sono piuttosto limitate. Quasi sicuramente dovrai rispedirlo tramite ps per ottenere le informazioni importanti. Puoi automatizzarlo usando una funzione bash nel tuo ~/.bashrc .

function ppgrep() { pgrep "[email protected]" | xargs --no-run-if-empty ps fp; }

Quindi chiama il comando con.

ppgrep <pattern>

Soluzione 2:

Combina pgrep con ps utilizzando xargs !

pgrep <your pgrep-criteria> | xargs ps <your ps options> -p

Ad esempio prova

pgrep -u user | xargs ps -f -p

per ottenere un elenco completo dei processi di user . Opzione -u user limiti pgrep all'utente dato (come numero o nome) mentre ps opzioni -f -p richiedere un elenco in formato completo per il PID selezionato.

È bello mantenere la prima riga con i nomi delle colonne. grep elimina sempre i nomi delle colonne.

Soluzione 3:

Quanto segue fornisce solo PID + riga di comando completa. Per "tutte le informazioni ps fa", vedi altre risposte...

La maggior parte dei Linux usa procps-ng. Dalla 3.3.4 (rilasciata nel 2012), pgrep -a (--list-full ) mostra la riga di comando completa.
Nota:per impostazione predefinita, pgrep confronta solo il modello che fornisci con il nome dell'eseguibile. Se vuoi confrontare con l'intera riga di comando (come fa grepping ps), aggiungi -f (--full ) opzione.

Nelle versioni precedenti (incluso il progetto procps originale), -l opzione mostrava informazioni ma il suo comportamento variava:

  • pgrep -fl ha confrontato il modello con la riga di comando completa e ha mostrato la riga di comando completa.
  • pgrep -l alone corrispondeva solo al nome dell'eseguibile e mostrava solo il nome dell'eseguibile.
    Se non vuoi una corrispondenza completa, non puoi vedere la riga di comando completa :-([https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=526355#15]

Non sono sicuro di quale codice usi *BSD ma la loro pagina man documenta il vecchio -fl comportamento.

Sfortunatamente non puoi nemmeno usare -fl portably - nel recente procps-ng, -f (--list-name ) stampa sempre solo il nome dell'eseguibile.

Soluzione 4:

Linux

Per la versione GNU di pgrep l'output long + fuzzy si ottiene con -af e la stringa deve essere sensibile alle maiuscole (vale a dire non c'è alcuna opzione per la distinzione tra maiuscole e minuscole ).

$ pgrep -af apache

OUTPUT:
    1748 /usr/sbin/apache2 -k start

Pagina man:

   -a, --list-full
       List  the  full  command line as well as the process ID.  (pgrep only.)

   -f, --full
       The pattern is normally only matched against the process name.  
       When -f is set, the full command  line is used.

Mac OS

Su OSX (e per deduzione, su BSD) -l (output lungo ) in combinazione con -f (corrispondenza con elenchi di argomenti completi ) visualizzerà il comando completo (-i aggiunge distinzione tra maiuscole e minuscole):

$ pgrep -fil ssh

OUTPUT:
    33770 ssh: [email protected] [mux] t

La pagina man:

 -l          Long output.  For pgrep, print the
             process name in addition to the
             process ID for each matching
             process.  If used in conjunction
             with -f, print the process ID and
             the full argument list for each
             matching process.  For pkill, dis-
             play the kill command used for
             each process killed.

Soluzione 5:

Usa l'opzione -v per grep - restituisce tutto MA il modello richiesto.

ps -ef | grep <process> | grep -v grep

Linux
  1. Come ottenere l'ID processo del processo in background?

  2. Come ottenere l'ID del processo per terminare un processo nohup?

  3. Come ottenere il PID dal processo figlio biforcuto nello script della shell

  4. Come ottenere il PID in base al nome del processo?

  5. Come ottenere informazioni sulla CPU su un guest vmware

Come visualizzare le informazioni di processo utilizzando Procs su Linux

Come visualizzare i PPID in Linux

Come ottenere il nome del file dal percorso completo in Linux

Come visualizzare le informazioni sulla CPU di Linux utilizzando CPUFetch

Come ottenere l'utilizzo della CPU di un singolo processo in Linux

Come ottenere l'URL dell'attuale repository svn?