
다른 쉘 스크립트(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
).