$cat t.sh
grep "12" test | wc -c
실행될 때 얼마나 많은 프로세스가 생성되는지 알고 싶습니다. 나는 쉘 스크립트의 모든 프로세스 이름을 얻는 방법은 무엇입니까?
./t.sh;ps -aux | grep "t.sh"
을 사용하지만, PS가 작동 할 때 "./t.sh는"이상 실행했기 때문에 그것은 작동하지 않았다.
어떻게이 목표에 도달 할 수 있습니까?
$cat t.sh
grep "12" test | wc -c
실행될 때 얼마나 많은 프로세스가 생성되는지 알고 싶습니다. 나는 쉘 스크립트의 모든 프로세스 이름을 얻는 방법은 무엇입니까?
./t.sh;ps -aux | grep "t.sh"
을 사용하지만, PS가 작동 할 때 "./t.sh는"이상 실행했기 때문에 그것은 작동하지 않았다.
어떻게이 목표에 도달 할 수 있습니까?
실행중인 시스템에 따라 다릅니다. strace
이있는 경우 모든 fork
시스템 호출을 추적 할 수 있습니다. 문제는 somesystems가 , 일부 vfork
및 일부 clone
을 사용하지만 실험을해야합니다. 리눅스에서 :
strace -c -f -evfork ./t.sh
당신에게 요약을 제공해야합니다. -c
은 카운트를, -f
은 "따르는"자식 프로세스를 의미하고 -evfork
은 커널 호출을 vfork
추적하는 것을 의미합니다. 출력이 stderr로 이동하지만 -o
옵션을 사용하여 파일로 리디렉션 할 수 있습니다 (여기에 명명 된 파이프를 지정하면 수행 할 수있는 몇 가지 트릭이 있습니다).
./t.sh;ps -aux | grep -E "t.sh"
-E 경기이 필요하고 다른 아무것도, 정말 내가 확신 할 수 없어 지금은 리눅스에없는 아니지만, 해당 옵션
함께 할 수있는 뭔가가있어 정확히 당신의 실수는 세미콜론입니다. grep을 실행하기 전에 쉘이 t.sh가 끝날 때까지 기다려야한다고 알려줍니다. 대신 배경에서 t.sh를 실행하도록 셸에 알리기 위해 앰퍼샌드를 사용하십시오. 오히려, grep` 수단이 확장 된 정규 표현식을 사용
$ ./t.sh & pstree $(pgrep t.sh)
'-E' 옵션'에 : 대신 GREP 당신이처럼 t.sh 스크립트에 의해 양산 프로세스의 목록을 볼 수 pstree를 사용하여 더 나을 것 기본 정규 표현식보다 'grep -E'는'egrep'과 동등합니다 (리눅스에서도 똑같습니다). – cdarke