Bash를 사용하여 다른 백그라운드 프로세스에서 백그라운드로 프로세스를 넣을 수 있습니까?
예를 들어 다음과 같은 코드가 있다고 가정해 보겠습니다.
function check_if_server_running {
while [ server_running -ne true ]
curl localhost:8000
done
bg %-
}
check_if_server_running &
./startServer
# Some other code...
bg %-를 ./startServer가 시작된 후 백그라운드에서 실행되도록 하는 것으로 바꿀 수 있습니까? 일반적으로 bg %-는 마지막 프로세스를 백그라운드에 두지만 나에게는 작동하지 않습니다.
답변1
bg
아니요, and fg
명령은 다음에서만 작동하므로 이 방법은 실제로 작동하지 않습니다.인터렉티브셸 모드에서는 이미 백그라운드에서 함수나 하위 셸을 실행 중인 경우에는 그렇지 않습니다.
(또한 bg
이미 백그라운드에 있는 작업을 자체적으로 백그라운드에 넣지 않고 백그라운드에서 중지된 작업을 다시 시작합니다. 먼저 Ctrl작업을 중지하려면 +를 사용해야 합니다 Z.)
백그라운드에서 서버를 시작한 다음 포그라운드에서 실행될 때까지 기다리도록 코드를 다시 작성해 보세요.
function wait_for_server_running {
while ! server_running; do
curl localhost:8000
done
}
./startServer &
wait_for_server_running
# Some other code...
이는 달성하려는 목표와 유사해 보입니다. 그렇죠?