如果我在 Linux 命令行界面上运行代码(例如可执行文件),然后关闭界面,会发生什么?可执行文件是否会继续在后台运行?如果它需要用户输入怎么办?我可以在稍后的会话中“返回到它”(例如为其提供用户输入)吗?
如果远程访问命令行界面(例如通过 SSH),这种行为会改变吗?
答案1
screen
除非您在或之类的程序中运行上述命令tmux
;或者您已将该程序置于后台 ( bg
) 并放弃 ( disown
),否则它将在其父 shell 死亡时被杀死(并且关闭终端仿真器的窗口也会杀死该 shell)
答案2
这个问题的变体以前也曾被问过。如果你搜索或nohup
,你就能找到它们。screen
tmux
但简而言之:
当您关闭网络接口的连接时,它会脱机,您正在运行的程序会被告知您已断开连接(使用 SIGHUP)并终止。
如果您希望它们继续运行,则需要告诉它们忽略此挂断信号,您可以通过在前面添加 nohup 命令来实现。
一种更舒适的方法是运行screen
或tmux
保持您的状态直到您重新连接。(并且可以做更多的事情)。