grep para um processo específico em ps mas não o próprio comando grep [duplicado]

2

Se eu quiser verificar se algo está em execução, eu faço ps aux | grep flamethrower , esperando apenas mostrar os processos que contêm flamethrower no nome. Isso sempre encontrará pelo menos um processo, pois grep flamethrower corresponde a esse critério.

Existe alguma maneira de verificar um processo específico, de uma maneira mais limpa ?

    
por Daedalus Mythos 03.12.2014 / 14:14

1 resposta

2

A maneira usual seria usar pgrep :

$ pgrep init
1
2215
6300
$ ps ax | grep init
    1 ?        Ss     6:41 /sbin/init
 2215 ?        Ss     1:54 init --user --restart --state-fd 26
 6300 ?        S      0:00 init --user --startup-event indicator-services-start
17522 pts/10   S+     0:00 grep --color=auto init

Observe que você pode precisar usar outros truques com pgrep também, se você usá-lo com watch e -f :

$ watch pgrep init -fa
Every 2.0s: pgrep init -fa                                                                                                                                                                                               
Wed Dec  3 19:19:47 2014

1 /sbin/init
2215 init --user --restart --state-fd 26
6300 init --user --startup-event indicator-services-start
18233 watch pgrep init -fa
18234 watch pgrep init -fa
18235 sh -c pgrep init -fa
$ watch pgrep [i]nit -fa
Every 2.0s: pgrep [i]nit -fa                                                                                                                                                                                           Wed Dec  3 19:20:42 2014

1 /sbin/init
2215 init --user --restart --state-fd 26
6300 init --user --startup-event indicator-services-start
    
por 03.12.2014 / 14:16

Tags