쉘 스크립트가 하위 프로세스를 생성하지 않고 하위 프로세스가 실행될 때까지 기다리지 않도록 만드는 방법

쉘 스크립트가 하위 프로세스를 생성하지 않고 하위 프로세스가 실행될 때까지 기다리지 않도록 만드는 방법

다른 쉘 스크립트(main.sh) 내에서 쉘 스크립트(inner.sh)를 호출하면 첫 번째 스크립트(main.sh)는 계속하기 전에 inner.sh가 완료될 때까지 기다립니다. inner.sh가 실패하면 main.sh도 실패합니다.

예를 들어:

cat .main.sh
#!/bin/bash 
bin/bash .inner.sh

main.sh는 inner.sh가 끝난 후에만 종료됩니다.

어떻게 inner.sh를 별도의 프로세스(하위 프로세스가 아닌, 동일한 프로세스가 아닌, main.sh와 병렬이 아닌)에서 실행할 수 있습니까?

내가 하고 싶은 것은 inner.sh에 무슨 일이 일어나더라도 main.sh가 계속 실행되도록 하는 것입니다.

답변1

/bin/bash .inner.sh &

.inner.sh자식 프로세스로 실행되지만 .inner.sh여전히 프로세스의 일부입니다..main.sh

.inner.sh그러나 완전히 별도의 프로세스로 실행 하려면 다음을 수행하는 것이 좋습니다.

/bin/bash .inner.sh & disown

또는

nohup /bin/bash .inner.sh &

.inner.sh완전히 독립적인 프로세스로 실행됩니다 . 따라서 ^C를 초과 하더라도 계속 .main.sh실행 .inner.sh됩니다( ^C통역사가 or 를 수행한 disown후에 실행했다고 가정 nohup).

관련 정보