终端与进程的关系

终端与进程的关系

最常见的情况是,我关闭了当前终端,子进程也会被关闭。当然,如果我使用suspend挂起进程,再使用`bg JobID wakeup它,进程就会和终端分离,在后台运行。那么当前终端和终端触发的进程是什么关系呢?是父子关系还是兄弟关系?还有,如何用命令行来触发一个不需要挂载到终端的进程呢?

答案1

您对父子行为的看法是正确的。您从命令行启动的进程正在从终端实例获取信号。一旦您关闭终端,它将发送一个高血压(挂断)信号给相关进程。

当您只有一个终端时,这非常有用,因为一旦您注销,它将通知所有进程用户已注销,并且它们应该终止其活动。但是,在您的情况下,您希望进程忽略此信号并在终端关闭后继续工作。为此,我们有一个名为的特殊命令,nohup您应该将其作为常规命令的前缀(例如nohup gedit)。

您可能还会问,终端关闭后,控制台上的输出会去哪里。好吧,您的主目录中nohup.out正在创建一个名为的文件,所有进程的输出都将重定向到该文件。

请注意,禁止不会在后台打开该进程,因此您仍然需要添加&如果需要的话,可以使用后缀(例如nohup gedit &)。

答案2

您可以使用 nohup 命令来阻止在关闭终端时退出子进程。例如nohup gcalctool。Nohup 代表“不挂断”。

相关内容