Como eu procuro um processo pelo nome sem usar o grep?

36

Para pesquisar um processo, você pode usar ps com grep .

Por exemplo, para procurar o firefox

ps aux | grep firefox

Como obter a mesma resposta sem usar grep ?

    
por Maythux 22.04.2015 / 07:40

6 respostas

52

O comando pgrep , e seu irmão pkill , existe exatamente para essa finalidade:

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

E, naturalmente, pgrep se exclui da correspondência, portanto, nenhum dos% rituais grep associados a ps | grep são necessários.

O outro conjunto de ferramentas para isso são os comandos pidof e killall . Eles não são tão flexíveis quanto pgrep e pkill .

  • pidof firefox listará processos cujo comando é firefox
por muru 22.04.2015 / 07:56
19
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.
    
por Maythux 22.04.2015 / 07:46
2

top permite que você pesquise por uma string quando você atinge a maiúscula L ; o processo será realçado e use as teclas de seta para cima e para baixo para percorrer a lista de processos. Similarmente, O comando htop permite destacar um processo específico quando você alcança / . E \ filtrará todos os processos com uma string específica no nome.

Para quem gosta de awk, aqui está um oneliner awk: ps -eF | awk '/process-name/ {print }' . Com ps -eF nome do processo está sempre na 11ª coluna. Como alternativa, se você obtiver ps -eF | awk '{print }' | sort , receberá uma lista classificada de nomes de processos, organizados em ordem alfabética. Encaixe-o no comando less apenas para visualizar a longa lista de arquivos mais facilmente.

    
por Sergiy Kolodyazhnyy 22.04.2015 / 08:38
1

Você também pode usar htop e, em seguida, pressionar F4 para filtrar os resultados com uma string definida pelo usuário correspondente. Você também tem um recurso de pesquisa personalizado disponível ao acessar a F3.

    
por JoErNanO 22.04.2015 / 11:36
1

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

grep firefox /proc/*/cmdline
    
por user1497298 11.08.2016 / 13:18
1

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 abra nano , pressione Ctrl + W e você pode procurar o nome que quiser.

    
por daniel 03.01.2017 / 07:45