web-dev-qa-db-ja.com

親シェルを終了せずに孤立プロセスを作成するにはどうすればよいですか?

Bashシェルでは、Nohup mycommand &孤立したプロセスです。コマンドを実行した後、bashシェルを閉じます。親シェルを終了せずに行うことはできますか?プロセスをデーモン化するためのシステムコールfork()およびexit()に似たシェルコマンドがあるかどうかを知りたいです。

4
Tim

孤立プロセスを作成するには、親が死ぬ必要があります。シェルを死なせたくない場合は、シェルがOrphanの親であってはなりません。これを行う最も簡単な方法は、シェルのフォークを子プロセスにして、孤児になるプロセスをフォークすることです。 Wikipedia記事の紹介 で説明されているように、このダブルフォークはデーモンの起動方法です。

シェルでは、&を使用して子プロセスを作成する方法を既に知っています。同じシェルのフォークである子プロセスを作成し、次にバックグラウンドプロセスをフォークさせるには、パーサーに理解してもらうだけです。

{ Nohup mycommand & } &