백그라운드 프로세스가 완료될 때까지 기다리는 방법은 무엇입니까?

백그라운드 프로세스가 완료될 때까지 기다리는 방법은 무엇입니까?

저는 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를 찾으려고 시도하지 않습니다(내장 명령이므로 이론적으로는 그렇게 할 수 있습니다).

waitproc1 및 proc2 변수에 저장된 실제 pid 값(또는 작업 번호)을 전달해야 합니다 . $변수 이름을 앞에 추가하여 평소대로 이 작업을 수행 할 수 있습니다 . 이렇게 하면 쉘이 변수 이름을 명령에 전달하기 전에 해당 값으로 대체하게 됩니다 wait.

관련 정보