백그라운드에서 어떻게 기다리나요?

백그라운드에서 어떻게 기다리나요?

작업 ID 1과 2를 가진 두 개의 백그라운드 작업이 있습니다. 작업 1이 끝난 후에 뭔가를 하고 싶지만, 멈춰 있기는 싫습니다.

현재 내가 얻는 것은 wait 1 && do whatever이지만 이 명령을 사용하면 현재 쉘을 자동으로 차단합니다. wait백그라운드에서 자체적으로 실행되기를 원합니다 . zsh에서 시도 했지만 wait 1 & && do whatever작동하지 않습니다. 오류가 발생합니다 zsh: parse error near '&&'.

참고: 내가 원하는 것이 중요합니다.백그라운드에서 대기 중대신에일부 백그라운드 작업이 완료되기를 기다리는 중.

답변1

구문 오류는 &및 및 모두 &&명령 구분 기호이기 때문에 발생합니다. &백그라운드에서 명령을 시작하고 즉시 다음 명령을 실행하고, &&첫 번째 명령을 실행하는 동안 완료될 때까지 기다렸다가 첫 번째 명령이 성공하면 두 번째 명령을 실행합니다.

비동기적으로 실행하려는 두 가지를 세 번째 항목과 함께 백그라운드로 실행하려면 다음 패턴을 사용하세요.

( first_thing && second_thing ) &
third_thing

선택 과목wait $! 뒤쪽에 third_thing계속하기 전에 처음 두 개를 완료하세요.

wait 1PID 1이 완료될 때까지 기다립니다. 이는 셸이 실행되는 동안에는 거의 발생하지 않습니다. 당신은 그것을 원할 것입니다 wait %1. 잠깐만요.작업 사양1.

답변2

wait답은 아닌 것 같아요 . ~에 따르면이것, tail더 나은 솔루션입니다. 내가 사용해야 할까?( tail --pid=WHATEVER -f /dev/null && do whatever ) &

관련 정보