를 사용하여 실행 중인 스크립트가 있고 bash -c
해당 스크립트를 사용하여 실행 중인 프로세스 수를 알고 싶습니다.
$ ps ax | grep my_script_run | grep -v grep | grep -v "bash -c"
11121 ? S 0:00 bash -c export PATH="/opt/rbenv/bin:$PATH"; ruby my_script_run.rb
11173 ? Rl 19:38 ruby my_script_run.rb
어떻게 든 위 명령은 bash -c
문자열을 제외하지 않습니다.
$ ps ax | grep my_script_run | grep -v grep | grep -v bash
11173 ? Rl 19:42 ruby my_script_run.rb
bash -c
이 명령은 잘 작동하지만 자체 가 아닌 해당 명령을 제외하고 싶습니다 bash
. 첫 번째 명령이 왜 제외되지 않습니까 bash -c
? 어떻게 올바르게 제외할 수 있나요?
편집하다
wc -l
다음에 사용하는 것을 쓰는 것을 잊어버렸습니다.grep
답변1
무엇에 대해
ps ax | grep -c [m]y_script_run
2개의 프로세스로 계산되어야 합니다.
또는
\ps ax | \grep '[m]y_script_run' | \grep -v 'bash -c' -c
어디서(편집)
-c
줄을 셀 수 있음[m]y_script_run
grep의 정규식 트릭이지만my_script_run
그 자체는 아닙니다. (단점은 고정 문자열에서만 작동하고${myvar}
. @G-Man에게 감사드립니다. 이 문자열을 인용해야 합니다.\ps
unalias\grep
grep 및 ps (만약의 경우에 대비해)
답변2
피하다grep-c
옵션 으로 간주되며 그 중 일부에는 방법이 거의 없습니다.
grep -v -- 'bash -c'
grep -v 'bash \-c'
- …