Ubuntuを使用してコマンドバックグラウンドプロセスの親プロセスを終了して孤立プロセスを作成できますかsleep 1000
?可能ですか?
答え1
一般的に言えば - はい。しかし、あなたの場合、親プロセスを終了するとは、シェルプロセスを終了してセッションを終了することを意味します。これはまた、Linuxがすべての子プロセスにSIGHUPシグナルを送信して閉じるようにします。したがって、まずnohupでコマンドを実行できます。
nohup sleep 1000 &
これで、killで親シェルを終了できます。より良い方法は、disown
killの代わりにバックグラウンドプロセスでのみ使用することです。
答え2
あなたできない孤立プロセスはpid == 1()のプロセスによって即座に採用されるか、init
Linuxでは「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