我发现,如果我的互联网连接在与远程 Linux 服务器的 ssh 会话期间断开,然后在短时间内重新连接,则 ssh 会话仍然存在。
如果我在服务器上运行一个程序并将其 stdout 和 stderr 输出重定向到一个文件,临时互联网断开似乎不会阻止该程序运行。
但断开连接会影响文件内容吗?我以为不会。我发现在不中断互联网连接的情况下重新运行程序时文件的某些内容无法重复,但我不确定互联网连接的中断是否是原因。
答案1
如果会话保持活动状态,则它保持活动状态。那里没有任何技巧,只是一个缓冲区和 TCP 做它的事情。
因此,如果 ssh 会话的连接由于互联网连接“较差”而丢失然后恢复,则在该会话中运行的应用程序永远不会知道。会议继续进行。
这很像拔掉显示器的插头(在查看控制台时)不应影响在该控制台上运行的应用程序。
答案2
但断开连接会影响文件内容吗?我以为不会。
如果连接中断,您的会话就会结束,您的 shell 和命令也会被终止。如果您有兴趣在远程服务器上运行命令,即使您断开连接,您应该查找nohup
命令、screen
多路复用tmux
器或mosh
连接不良的 shell。
答案3
如果您想确保程序在断开连接时仍保持运行,请使用屏幕。然后你可以故意断开你的 ssh 连接,几个小时甚至几天后回来并重新连接到它(当然,只要机器没有重新启动,或者任何其他操作来终止程序)