grep은 ps aux에서 무작위로 나타나고 사라집니다(ps aux | grep python)

grep은 ps aux에서 무작위로 나타나고 사라집니다(ps aux | grep python)

이것은 실제 문제는 아니지만 이상한 문제에 더 가깝습니다. 이것을 실행하면 while true; do ps aux | grep abc; echo done; done다음과 같은 결과가 나타납니다.

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

때때로 grep당신은 실제로 자신을 보지 못합니다 ps aux. 두 프로세스가 실행되는 것은 시간 문제입니까? 이는 루프가 아닌 개별적으로 명령을 실행할 때도 발생합니다.

이 문제는 내 컴퓨터와 SSH를 통한 다른 컴퓨터 모두에서 발생하지만 (출력이 제공되는) 원격 컴퓨터에서 더 자주 발생합니다.

우분투14.04

답변1

말씀하신 대로 타이밍인 것 같아요. 파이프라인의 명령은 동시에 실행됩니다. 자세한 정보를 확인할 수 있습니다. 파이프라인 명령은 어떤 순서로 실행되나요?. CPU가 많거나 적거나 프로세스가 많거나 적은 경우 컴퓨터에서 이런 일이 더 자주 발생할 수 있습니다.

답변2

이는 시간에 따라 다릅니다. 당신은 거의 항상아니요grep 명령 자체가 출력의 일부가 되기를 바랍니다. 특히 ps를 필터링하고 결과를 종료하려는 경우 ;-)

일반적인 관용어/기술은 다음과 같습니다.

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

즉, grep은 여전히 ​​abc가 포함된 항목을 찾지만 grep 명령 자체는 실제로 "[a]bc"이기 때문에 일치하지 않습니다...

Linux 또는 최신 Unix를 사용하는 경우

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

while..done 루프보다 약간 짧습니다.

답변3

정말 시간이 다 됐네요.

grep 명령을 보고 싶지 않은 경우 사용 사례에 따라 두 가지 작업을 수행할 수 있습니다.

PID만 확인해야 하는 경우 다음을 수행하세요.

pgrep -l python

자세한 내용이 필요한 경우:

ps aux | grep python | grep -v grep

관련 정보