PID no terminal gnome do Ubuntu

0

Ao usar ps aux | grep -i “name of your desired program” , a lista de PIDs apareceu, mas encontrei mais PIDs do que no System Monitor.

Como isso é possível?

Eu não encontrei PIDs com -color =auto no System Monitor.

    
por freeezer98 01.02.2017 / 15:50

1 resposta

6

Quando você executa ps ... | grep ... , ps e grep são iniciados juntos e a saída de ps é alimentada para grep de forma assíncrona. Então, no momento em que ps varre a lista de processos e imprime a saída, o processo grep também está ativo e a saída de ps inclui esse grep processo também.

Agora, se você fizer um simples grep foo , a saída de ps conterá grep foo e grep corresponderá a esse foo :

$ ps aux | grep non-existent
muru  19042  0.0  0.0  10760  2224 pts/8    S+   23:56   0:00 grep non-existent

Obviamente, não há processo chamado non-existent .

Em vez de ps | grep , use pgrep para uma correspondência mais clara :

pgrep foo

Ou ps em si, se você souber o nome do comando:

ps -C foo

Por que grep --color... ? Porque o Ubuntu define um apelido para grep por padrão:

$ alias grep
alias grep='grep --color=auto'

É também por isso que você vê truques idiotas como:

ps ... | grep foo | grep -v grep
ps ... | grep '[f]oo'
    
por muru 01.02.2017 / 15:57