Comando para filtrar processos por nome?

1

Qual é o comando que permite a filtragem de processos através de um filtro de metacaracteres de expressões regulares?

Por exemplo, se eu quisesse filtrar todos os processos que começam com a letra A ou a , como implementaria o [Aa]$ no comando geral?

    
por KMoy 04.10.2016 / 08:09

2 respostas

4

O comando é pgrep .

Para encontrar todos os processos que começam com A ou a , somente PID:

pgrep '^[Aa]'

Você pode usar qualquer padrão ERE (Extended Regular Expression).

Para obter o nome do processo, use -l :

pgrep -l '^[Aa]'

Para obter uma linha de comando completa, use -a :

pgrep -a '^[Aa]'

Você também pode combinar o padrão com a linha de comando completa usando a opção -f .

Verifique man pgrep .

Só para observar, seu padrão Regex está errado, o token Regex $ corresponde ao final de uma linha, não inicia, ^ corresponde a início. Portanto, seu padrão, [Aa]$ corresponderia a qualquer nome de processo (ou linha de comando completa se -f for usado) com A ou a no final.

Também evite usar:

ps -ef | grep ...

isso é desajeitado e envolve desova desnecessária de um processo extra, e um canal anônimo, onde pgrep pode fazer isso facilmente, e de uma só vez também. Além disso, pgrep (e seu irmão pkill ) foi especificamente projetado para esse propósito.

    
por heemayl 04.10.2016 / 08:12
-1
ps ax| grep name_of_processes 

Por exemplo:

$ ps ax |grep python

1393 pts/2    S+     0:00 grep --color=auto python
1713 ?        S      0:00 /usr/bin/python3 /usr/bin/mintupdate-launcher
1727 ?        Sl     0:01 /usr/bin/python3        /usr/lib/linuxmint/mintUpdate/mintUpdate.py

A maneira mais rápida que eu estou acostumado a fazer e você pode ver o número de processos para matar, se quiser.

Nos seus casos, para eliminar o processo do grep, você pode usar colchetes como parte do seu padrão:

ps -ef | grep '[t]ty'
    
por Ender Phan 04.10.2016 / 08:43