如何使shell脚本不创建子进程并且不等待子进程执行

如何使shell脚本不创建子进程并且不等待子进程执行

如果我在另一个 shell 脚本 (main.sh) 中调用 shell 脚本 (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并行)?

我想做的是让 main.sh 继续执行,无论inner.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在解释器执行了disownor后执行了操作nohup)。

相关内容