親シェルが終了した後もプロセスが存続するようにするにはどうすればよいですか?

親シェルが終了した後もプロセスが存続するようにするにはどうすればよいですか?

プロセスが親シェルの終了で生存するには、どの要件と十分な条件を満たす必要がありますか?

  1. シグナルについて具体的に考えてみると、どのシグナルがプロセスから無視されたり、プロセスに転送されたりしないのですか?

    • SIGHUP、SIGTERM?

      しかし、nohup プロセスはSIGHUPだけを無視し、SIGTERMは無視しないようにしますか? (disown親シェルがプロセスにシグナルを送信するのを避けるようです)

    • SIGINT、SIGQUIT、SIGTSTP、SIGTTIN、SIGTTOUなどの端末生成信号?

      ただし、disownand &(バックグラウンド)は制御端末からプロセスを切断しません。 (nohup制御端末からプロセスを切断できます)。

  2. 信号以外に必要なものはありますか?

  3. 上記の条件を考慮して、親シェルが終了した後もプロセスが生き残るようにするにはどうすればよいですか?

  4. 親シェルが終了した後でもプロセスが生き残るようにすることは、プロセスの親シェルを変更するのと同じですか?

    bashシェルやcoreutilsなどの基本ユーティリティでプロセスの親シェルプロセスを変更することが唯一の2つの方法ですかdisownnohupシェルが終了すると、親と子の関係は変わりますか?

関連情報