grep aparecendo e desaparecendo aleatoriamente no ps aux (ps aux | grep python) [duplicado]

0

Este não é um problema real - mas é mais uma pergunta curiosa: quando executo while true; do ps aux | grep abc; echo done; done , obtenho o seguinte:

user    29733  0.0  0.0  11748   924 pts/1    R+   20:25   0:00 grep --color=auto abc
done
user    29735  0.0  0.0  11748   920 pts/1    S+   20:25   0:00 grep --color=auto abc
done
user    29737  0.0  0.0  11748   924 pts/1    S+   20:25   0:00 grep --color=auto abc
done
done
done
done
user    29745  0.0  0.0  11748   924 pts/1    R+   20:25   0:00 grep --color=auto abc
done
user    29747  0.0  0.0  11748   924 pts/1    R+   20:25   0:00 grep --color=auto abc
done
user    29749  0.0  0.0  11748   924 pts/1    R+   20:25   0:00 grep --color=auto abc
done
user    29751  0.0  0.0  11748   924 pts/1    R+   20:25   0:00 grep --color=auto abc
done
user    29753  0.0  0.0  11748   924 pts/1    S+   20:25   0:00 grep --color=auto abc
done
user    29755  0.0  0.0  11748   924 pts/1    S+   20:25   0:00 grep --color=auto abc
done
done
user    29759  0.0  0.0  11748   924 pts/1    R+   20:25   0:00 grep --color=auto abc
done
user    29761  0.0  0.0  11748   920 pts/1    R+   20:25   0:00 grep --color=auto abc
done

Às vezes, grep não se vê em ps aux . Isso é apenas um problema de tempo entre os dois processos em execução? Isso também acontece quando eu executo os comandos individualmente e não em um loop.

Isso está acontecendo no meu computador e em outra máquina no ssh, mas está acontecendo com mais frequência no computador remoto (de onde vem a saída).

Ubuntu 14.04

    
por texasflood 05.03.2015 / 21:33

3 respostas

4

Eu acho que isso é apenas tempo, como você mencionou. Comandos em tubulações executados simultaneamente, você pode encontrar mais informações sobre Em que ordem os comandos canalizados são executados? . Isso pode acontecer com mais frequência em uma máquina se você tiver mais / menos CPU ou mais / menos processos.

    
por 05.03.2015 / 21:42
1

É relacionado ao tempo. Você quase sempre não quer que o próprio comando grep seja parte da saída, especialmente quando você está filtrando ps e planeja matar os resultados; -)

O idioma / truque usual para fazer isso é:

while true; do ps aux | grep [a]bc; echo done; sleep 1; done

O que significa que o grep ainda encontrará algo com abc, mas o comando grep em si não será compatível porque é literalmente '[a] bc' ...

Se você está no linux ou em um unix mais moderno

watch -n1 'ps aux | grep [a]bc'

É um pouco menor do que o tempo .. loop feito

    
por 05.03.2015 / 22:57
0

É de fato relacionado ao tempo.

Se você não quiser ver seu comando grep, há duas coisas que você pode fazer, dependendo do seu uso.

Se você precisar apenas ver os pids recorrendo a:

pgrep -l python

Se precisar de mais detalhes:

ps aux | grep python | grep -v grep
    
por 05.03.2015 / 23:44

Tags