많은 프로세스를 시작하는 for 루프를 어떻게 만들 수 있나요?

많은 프로세스를 시작하는 for 루프를 어떻게 만들 수 있나요?

몇 가지 버그를 테스트하고 싶고 그러기 위해서는 PID가 99999보다 큰 상황이 필요합니다. 저는 for 루프인 bash 스크립트를 생각하고 있습니다. 어떤 아이디어가 있나요?

답변1

원하는 PID로 프로세스를 시작하려면 이와 같은 작업을 수행할 수 있습니다.

while true; do bash -c '[[ "$$" == 99999 ]] && echo PID is 99999'; done

원하는 PID를 얻을 때까지 기다렸다가 echo실제로 테스트해야 하는 내용으로 해당 명령문을 대체할 수 있습니다.

참고자료

살해된 후에도 동일한 PID가 사용됩니까?

편집하다

PID 번호가 증가하는 이유는 무엇입니까? 다른 bash 인스턴스를 계속해서 실행하기 때문입니까?

나는 당신이 말한 것이 현재 일어나고 있는 일이라고 믿습니다. 이는 아래와 같이 간단하게 테스트할 수 있습니다.

while true; do bash -c 'echo $$' ; done

우리는 PID가 계속 증가하는 것을 볼 수 있었고 맨 페이지에서 bash다음과 같은 것을 볼 수 있었습니다.

-c string -c 옵션이 있으면 문자열에서 명령을 읽습니다. 문자열 뒤에 인수가 있으면 $0부터 시작하는 위치 매개변수에 할당됩니다.

따라서 제가 이해한 바에 따르면 echo위 테스트의 각 명령문은 별도의 프로세스로 실행되므로 PID가 증가하는 것을 볼 수 있습니다.

답변2

당신이 하려는 것이 무엇이든 아마도 더 나은 접근 방식일 것입니다. 그러나 당신이 다음과 같이 결정했다면

while [[ 1 == 1 ]]; do sleep 10000& done

여러 개를 시작 sleeps하지만 모두 시작하려면 시간이 걸릴 수 있습니다. 충분한 프로세스가 있으면 루프를 Ctrl-C종료하기 위해 누르십시오 while.

관련 정보