시작한 인스턴스를 계산하는 bash
스크립트를 만들었습니다. 여기Bash 자체의 인스턴스를 잘못 계산하는 스크립트
는 (이 예에서는, 나는 wc -l
로 계산하는 대신 인스턴스를 보여주는거야)된다
#!/bin/bash
nb=`ps -aux | grep count_itself.sh`
echo "$nb"
sleep 20
이
(물론, 내 스크립트가 count_itself.sh
이름)를 실행하면 나는이 두 줄을 반환 할 것으로 예상하지만,이 세 가지 결과 : &
플래그를 실행하면
[email protected]:/# ./count_itself.sh
root 16225 0.0 0.0 12400 1176 pts/0 S+ 11:46 0:00 /bin/bash ./count_itself.sh
root 16226 0.0 0.0 12408 564 pts/0 S+ 11:46 0:00 /bin/bash ./count_itself.sh
root 16228 0.0 0.0 11740 932 pts/0 S+ 11:46 0:00 grep count_itself.sh
을 (즉,
[email protected]:/# ./count_itself.sh &
[1] 16233
[email protected]:/# ps -aux | grep count_itself.sh
root 16233 0.0 0.0 12408 1380 pts/0 S 11:48 0:00 /bin/bash ./count_itself.sh
root 16240 0.0 0.0 11740 944 pts/0 S+ 11:48 0:00 grep --color=auto count_itself.sh
내 질문은 : 왜 스크립트 내부의 ps -aux
실행이 예상보다 한 줄 이상을 반환하지 배경, 수동으로 ps -aux
비트를 실행하기에, 내가 원하는 것입니다있는이 반환?
또는 다른 말로하면, 첫 번째 예제에서 ID가 16226
인 프로세스가 생성되는 이유는 무엇입니까?
EDIT (대부분의 사람들이 내 질문을 오해하는 것 같은) 다음 bash
실행 /bin/bash ./count_itself.sh
의 두 인스턴스를 반환하는 이유는 그것이 grep count_itself.sh
를 반환하지 왜 궁금하네요
.
편집 2 :
물론, 나는이 문제를 방지하고 스크립트가 할 수있는 방법을 찾고 있어요 한 번만 /bin/bash ./count_itself.sh
을 반환합니다.
'\'ps -aux | grep count_itself.sh \'는 하위 셸, 즉 하위 프로세스에서 실행됩니다. 따라서 스크립트를 실행하는 쉘은 분기되고 자식은'ps -aux | grep count_itself.sh' 명령을 사용하십시오. – Leon
나는 제안한다 : nb ='ps -aux | grep [c] ount_itself.sh – Cyrus
'ps -aux | grep count_itself.sh' 당신의 grep은 count_itself의 인스턴스와 같습니다. regex – Stargateur