Como pesquiso um processo pelo nome sem usar o grep?


62

A fim de procurar um processo que você pode usar pscom grep.

Por exemplo, para procurar firefox

ps aux | grep firefox

Como obter a mesma resposta sem usar grep?


11
Estou curioso para saber por que você faria isso, já que a ps/grepsolução funciona tão bem?
Neuronet

OP só quer um comando mais curto, eu acho. Se houvesse algo assim ps -n <process name>, responderia à sua necessidade. ps -n firefoxé um pouco menor que ps | grep firefox. psjá pode filtrar pidou processar um ID de usuário, por isso é uma pergunta razoável filtrar o nome do processo.
Jochem Schulenklopper 7/11

Respostas:


71

O pgrepcomando e seu irmão pkillexistem precisamente para esse fim:

  • pgrep firefox listará todos os processos cujos comandos correspondem firefox
  • pgrep -f firefox listará todos os processos cujas linhas de comando inteiras correspondem firefox
  • pgrep -x firefox listará todos os processos cujos comandos correspondem exatamente firefox
  • ... e assim por diante.

E, naturalmente, pgrepse excluirá da partida, portanto, nenhum dos greprituais associados ps | grepé necessário.


O outro conjunto de ferramentas para isso são os comandos pidofe killall. Estes não são tão flexíveis quanto pgrepe pkill.

  • pidof firefox listará processos cujo comando é firefox

24
ps -fC process-name

exemplo:

ps -fC firefox

de 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.

Esta é a melhor resposta, mas infelizmente não funciona no OSX. O BSD ps -Cbandeira se comporta de forma completamente diferente - "Mude a forma como a percentagem da CPU é calculado"
mastaBlasta

2

toppermite procurar uma string quando você bate em maiúsculas L; o processo será destacado e use as teclas de seta para cima e para baixo para rolar pela lista de processos. Da mesma forma, o htopcomando permite destacar um processo específico quando você pressiona /. E \filtrará todos os processos com uma sequência específica no nome.

Para quem gosta de awk, aqui está um oneliner awk: ps -eF | awk '/process-name/ {print $11}' . Com o ps -eFnome do processo está sempre na 11ª coluna. Como alternativa, se você ps -eF | awk '{print $11}' | sortreceber uma lista classificada de nomes de processos, classificados em ordem alfabética. Canalize-o no lesscomando apenas para visualizar a longa lista de arquivos com mais facilidade.


2

Um truque legal

$ps -ejH

Você receberá todos os processos com nomes

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

Redirecione ou copie a saída para um arquivo e, em seguida nano, abra , pressione Ctrl+ W e você pode procurar o nome que deseja.


1

Você também pode usar htope pressionar F4 para filtrar os resultados com uma sequência definida pelo usuário correspondente. Você também tem um recurso de pesquisa personalizado disponível pressionando F3.


1

Se dois processos forem o problema, você poderá usar apenas grep:

grep firefox /proc/*/cmdline

0

Acabei de ler este ps alias no Lennart Poettering Blog. A saída é de acordo com a parentalidade do grupo de controle systemd:

alias psc='ps xawf -eo pid,user,cgroup,args'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.