저는 bash 쉘과 함께 Amazon Linux를 사용하고 있습니다. 계속하기 전에 백그라운드에서 여러 프로세스를 실행하고 프로세스가 완료될 때까지(성공 또는 오류 종료 코드와 함께) 기다리고 싶습니다. 그래서 나는 다음을 시도한다:
node test.js 2>&1 | tee --append $TFILE1 &
proc1=$!
node SkyLocal.js 2>&1 | tee --append $TFILE2 &
proc2=$!
wait proc1
rc1=$?
wait proc2
rc2=$?
하지만 다음과 같은 오류가 발생합니다.
/home/jboss/.jenkins/jobs/myproject/workspace/automated-tests/nodejs/run_tests.sh: line 36: wait: `proc1': not a pid or valid job spec
/home/jboss/.jenkins/jobs/myproject/workspace/automated-tests/nodejs/run_tests.sh: line 38: wait: `proc2': not a pid or valid job spec
백그라운드 프로세스의 PID를 캡처한 다음 계속하기 전에 해당 프로세스가 완료될 때까지 어떻게 기다릴 수 있습니까?
답변1
오류 메시지에서 알 수 있듯이 이 wait
명령은 변수 이름으로 pid를 찾으려고 시도하지 않습니다(내장 명령이므로 이론적으로는 그렇게 할 수 있습니다).
wait
proc1 및 proc2 변수에 저장된 실제 pid 값(또는 작업 번호)을 전달해야 합니다 . $
변수 이름을 앞에 추가하여 평소대로 이 작업을 수행 할 수 있습니다 . 이렇게 하면 쉘이 변수 이름을 명령에 전달하기 전에 해당 값으로 대체하게 됩니다 wait
.