后台程序的生命周期

后台程序的生命周期

如果您使用 & 选项在终端中启动后台程序。当您关闭终端时它会停止吗?

答案1

当你挂断终端。终端不一定具有关闭

使用终端仿真程序,没有任何实际挂起的东西,但关闭仿真程序会触发模拟终端挂起。(更严格地说:关闭伪终端设备的主端可视为从端的终端挂起。)并非所有仿真程序都有关闭的概念。内置于操作系统内核中的那个,为内核提供虚拟终端,例如,不能被“关闭”。

在真实终端中,有一个带载波检测线的串行端口,并且如果远程终端上的拨入用户挂断电话连接,则可能会发生真实的调制解调器挂断。

这一切都可以追溯到分时系统时代,该系统使用远程终端,用户需要为使用付费。如果某人意外失去了电话连接,他肯定不希望为仍在运行的程序付费,可能要等到下次系统重新启动。相反,系统管理员和其他用户不希望程序仍在运行并连接到现在名义上免费的终端,这些终端可能会被分配给其他拨入用户。

从那以后,很多事情都发生了变化。首先,BSD 作业控制启发了对挂断信号分布的改变,并引入了会议主持人它负责管理登录会话中的作业,它的死亡被认为是对这些作业的沉重打击。我们已经获得了通过互联网进行的远程登录,并且有了GUI 登录会话. 终端仿真程序已经变得如此流行,以至于人们将它们与它们所代表的终端混淆了。模仿

但基本思想仍然是,当用户终端会话停止时,用户进程在正常情况下会以某种方式终止,即使是通过会话领导者的调解。

答案2

访问从终端在后台运行程序或者启动和分离终端程序的最有效方法是什么?

如果您使用 & 选项在终端中启动后台程序。当您关闭终端时它会停止吗?

我发现gnome-terminal单击关闭按钮关闭会导致该程序停止/终止。如果你通过以下方式关闭终端exit命令比程序将不会关闭/停止/终止。

答案3

是的,它会停止。要避免程序停止,请使用nohup

例如,nohup firefox > /dev/null 2>&1 &既允许在后台运行 Firefox 而不关闭,又可以防止在控制台上显示错误/输出

相关内容