如何使进程在其父 shell 退出后继续存在?

如何使进程在其父 shell 退出后继续存在?

为了让进程在其父 shell 退出后继续存活,该进程需要满足哪些必要和充分条件?

  1. 具体考虑信号,哪些信号应该被进程忽略或者不发送给进程?

    • SIGHUP,SIGTERM?

      但是nohup 让进程只忽略 SIGHUP,而不忽略 SIGTERM? (disown似乎避免父外壳向进程发送任何信号)

    • 终端生成的信号,例如 SIGINT、SIGQUIT、SIGTSTP、SIGTTIN、SIGTTOU?

      但是disown&(后台)不会断开进程与其控制终端的连接。 (nohup可以断开进程与其控制终端的连接)。

  2. 除了信号之外,其他方面除了信号之外还有其他必要条件吗?

  3. 考虑到上述条件,如何使进程在其父 shell 退出后继续存在?

  4. 使进程在其父 shell 退出后继续存在的任务与更改进程父进程的任务相同吗?

    在 bash shell 和基本实用程序(例如 coreutils)中,更改进程的父 shell 进程是唯一的两种方法吗disownnohupshell退出时亲子关系会发生变化吗?

相关内容