シェルスクリプトが子プロセスを生成せず、子プロセスが実行されるのを待たないようにする方法

シェルスクリプトが子プロセスを生成せず、子プロセスが実行されるのを待たないようにする方法

別のシェルスクリプト(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)。

おすすめ記事