Come posso cercare un processo per nome senza usare grep?


62

Per cercare un processo che puoi usare pscon grep.

Ad esempio per cercare Firefox

ps aux | grep firefox

Come ottenere la stessa risposta senza usare grep?


1
Sono curioso di sapere perché vorresti farlo, dato che la ps/grepsoluzione funziona così bene?
neuronet

OP vuole solo un comando più breve, immagino. Se ci fosse una cosa del genere ps -n <process name>risponderebbe al suo bisogno. ps -n firefoxè un po 'più corto di ps | grep firefox. pspuò già filtrare pido elaborare un ID utente, quindi è una domanda ragionevole filtrare in base al nome del processo.
Jochem Schulenklopper,

Risposte:


71

Il pgrepcomando, e il suo fratello pkill, esiste proprio per questo scopo:

  • pgrep firefox elencherà tutti i processi i cui comandi corrispondono firefox
  • pgrep -f firefox elencherà tutti i processi le cui intere righe di comando corrispondono firefox
  • pgrep -x firefox elencherà tutti i processi i cui comandi corrispondono esattamente firefox
  • ... e così via.

E naturalmente, pgrepsi escluderà dalla partita, quindi nessuno dei greprituali associati ps | grepè necessario.


L'altro set di strumenti per questo sono i comandi pidofe killall. Questi non sono flessibili come pgrepe pkill.

  • pidof firefox elencherà i processi il cui comando è firefox

24
ps -fC process-name

esempio:

ps -fC firefox

a partire dal man ps

  -C cmdlist      Select by command name.
                       This selects the processes whose executable name is
                       given in cmdlist.


 -f              Do full-format listing. This option can be combined
                       with many other UNIX-style options to add additional
                       columns. It also causes the command arguments to be
                       printed. When used with -L, the NLWP (number of
                       threads) and LWP (thread ID) columns will be added. See
                       the c option, the format keyword args, and the format
                       keyword comm.

Questa è la risposta migliore ma purtroppo non funziona su OSX. Il ps -Cflag BSD si comporta in modo completamente diverso: "Cambia il modo in cui viene calcolata la percentuale della CPU"
mastaBlasta

2

topti permette di cercare una stringa quando premi in maiuscolo L; il processo verrà evidenziato e utilizzare i tasti freccia su e giù per scorrere l'elenco dei processi. Allo stesso modo, il htopcomando consente di evidenziare un particolare processo quando si preme /. E \filtrerà tutti i processi con una stringa particolare nel nome.

Per coloro che amano awk, ecco un oneliner awk: ps -eF | awk '/process-name/ {print $11}' . Con il ps -eFnome del processo è sempre nell'undicesima colonna. In alternativa, se si ps -eF | awk '{print $11}' | sortottiene un elenco ordinato dei nomi dei processi, in ordine alfabetico. Collegalo al lesscomando solo per visualizzare più facilmente il lungo elenco di file.


2

Un bel trucco

$ps -ejH

Otterrai tutti i processi con nomi

exmple:
1747   568   568 ?        00:00:00   colord
1833  1832  1832 ?        00:00:00   gnome-keyring-d
2263   568   568 ?        00:00:00   udisksd
2311  2311  2311 ?        00:00:00   cupsd
2315  2315  2311 ?        00:00:00     dbus

Reindirizza o meno copia l'output in un file e quindi apri nano, premi Ctrl+ W e puoi cercare il nome che desideri.


1

Puoi anche usare htope quindi premere F4 per filtrare i risultati con una stringa definita dall'utente corrispondente. Hai anche una funzione di ricerca personalizzata disponibile premendo F3.


1

Se il problema è rappresentato da due processi, è possibile utilizzare solo grep:

grep firefox /proc/*/cmdline

0

Ho appena letto questo alias ps sul blog di Lennart Poettering. L'output è in base alla parenting del gruppo di controllo systemd:

alias psc='ps xawf -eo pid,user,cgroup,args'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.