작업 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 1
PID 1이 완료될 때까지 기다립니다. 이는 셸이 실행되는 동안에는 거의 발생하지 않습니다. 당신은 그것을 원할 것입니다 wait %1
. 잠깐만요.작업 사양1.
답변2
wait
답은 아닌 것 같아요 . ~에 따르면이것, tail
더 나은 솔루션입니다. 내가 사용해야 할까?( tail --pid=WHATEVER -f /dev/null && do whatever ) &