关闭PC而不终止SSH会话


14

我在远程Linux机器上运行着一些繁重而漫长的进程。我使用笔记本电脑通过SSH连接到这些计算机,然后从沙发上运行进程。

但是,当我想关闭笔记本电脑时,由于远程进程被终止,我遇到了麻烦。

我进行了研究,发现“屏幕”对我来说是一个很好的解决方案,它是!(只要我不关闭笔记本电脑)。是否没有办法“保持”“屏幕”会话,以便我可以将其关闭然后重新连接到会话?


您是否正在远程Linux系统上运行屏幕?
山姆·米勒

是否有可能后台处理?
ennuikiller 2010年

Answers:


32

听起来您正在笔记本电脑上运行屏幕会话。然后从该屏幕会话切换到远程主机。关闭笔记本电脑将终止本地屏幕进程,从而终止ssh会话。

您要做的是从笔记本电脑到远程主机的ssh。然后在远程主机上启动屏幕会话。当您的笔记本电脑关闭时,ssh会话将终止,但远程屏幕会话将继续存在。

下次登录到远程系统时,可以使用“ screen -r”重新连接到屏幕会话,或者如果您有多个屏幕会话“ screen -r <pid>”,则可以重新连接到该屏幕会话。

注意:如果您在ssh被杀死之前忘了与远程屏幕会话分离,则该屏幕会话可能会认为它仍处于连接状态。在这种情况下,您需要先执行“ screen -dr <pid>”来分离会话。


4
顺便说一句,如果我没记错的话,在进入时按,Ctrl+A然后按将会分离屏幕会话。Dscreen
David Z

@David,这是正确的,您也可以关闭终端或ssh会话,屏幕将保持打开状态。“ screen -raAd”将重新连接。
克里斯(Chris)2010年

如何在远程主机上启动屏幕会话?
愚蠢的人

15

您可以nohup用来启动一个过程,该过程在从计算机注销后将继续运行。那可能就是您想要的。


对于已经运行的过程,可以执行^ Z,然后disown创建我认为等效的效果。 disown是一种在其他shell上可能无法使用的bashism。
直觉

为+1 nohup。问题^Z在于它会暂停该过程。没有任何方法可以使进程后台运行,而要使其保持正常运行。
2010年

6

如果您在中断开了远程会话screen,则可以安全地关闭笔记本电脑。


不知道是否普遍分离的屏幕会话必须在远程服务器上。
直觉


2

使用nohup。使用VNC的另一种选择。在服务器上创建VNC会话。然后在您进行任何工作时都连接到它。(在长时间的过程中使用某些GUI时更有用-例如一个IDE)


0

如果这些服务器具有ILO / DRAC /其他远程KVM等,则可以连接到控制台并在其中进行交互。由于启动的会话本质上是本地的,因此从笔记本电脑断开连接将无济于事。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.