孤児プロセスの作成

孤児プロセスの作成

Ubuntuを使用してコマンドバックグラウンドプロセスの親プロセスを終了して孤立プロセスを作成できますかsleep 1000?可能ですか?

答え1

一般的に言えば - はい。しかし、あなたの場合、親プロセスを終了するとは、シェルプロセスを終了してセッションを終了することを意味します。これはまた、Linuxがすべての子プロセスにSIGHUPシグナルを送信して閉じるようにします。したがって、まずnohupでコマンドを実行できます。 nohup sleep 1000 & これで、killで親シェルを終了できます。より良い方法は、disownkillの代わりにバックグラウンドプロセスでのみ使用することです。

答え2

あなたできない孤立プロセスはpid == 1()のプロセスによって即座に採用されるか、initLinuxでは「subreaper」プロセスによって採用されるため、孤立プロセスを作成します。

それがあなたが望むものなら、(cmd ... &)

例:

$ (sleep 9999 &)
$ pgrep -fa 'sleep 9999'
5435 sleep 9999
$ ps -o pid,ppid,cmd 5435
  PID  PPID CMD
 5435     1 sleep 9999

SIGHUP注:セッション(セッションリーダーなど)が終了すると、Linuxは他の応答のステートメントをすべての無効なプロセスに送信します。 Linuxとbashはどちらも、上記の例では属していない選択されたSIGHUPプロセスサブセットにのみシグナルを送信します。sleep

関連情報