有没有办法让“屏幕”会话在重启后继续存在?

有没有办法让“屏幕”会话在重启后继续存在?

我正在使用屏幕实用程序,并希望在机器重启时保留会话。如果不可能,也许你可以推荐其他替代方案屏幕这将允许在重启之间保留会话。

如果有必要的话,我正在使用 Ubuntu Server 10.04(Lucid Lynx)。

我通过 Screen 打开了多个会话。机器重启后,所有这些会话都会丢失,我必须重新打开它们。我想找到一种方法来保留这些 Screen 会话。

答案1

首先,让我们澄清几个重要的事情:

  1. 涉及多少台机器?换句话说,您是连接到远程机器,还是所有内容都在本地机器上?
  2. 如果涉及远程机器,那么哪台机器正在重新启动:是服务器还是客户端?

如果涉及一台机器,或者服务器正在重新启动,那么你大多运气不好。

如果您登录到远程计算机,但需要重新启动本地计算机,那么只要您在远程计算机而不是本地计算机上运行屏幕,就没有问题。我意识到这对于任何有经验(甚至经验不足)的屏幕用户来说都是非常明显的,但我提到这一点只是为了以防万一它可能会有所帮助。

还有一种可能性(同样,这是否对您有帮助取决于您的情况)是在虚拟机上运行带有屏幕的机器。假设它是一台远程物理服务器,需要重新启动,但它在(例如)VMware 上有一个客户操作系统。您可以暂停客户操作系统并在硬件重新启动后重新启动它。这完全取决于您需要重新启动的原因(未指定),以及您对机器的控制程度,以及您是否愿意经历所有这些麻烦。

没有简单的解决方案,而且可能没有一个解决方案适合您。但祝你好运。

如果您要登录多台机器,那么在所有远程机器上分别运行 screen 似乎太麻烦了,事实也确实如此。在这种情况下,让中间机器运行 screen 很有用,它可以有许多 screen 窗口,每个窗口都登录到另一台远程机器上。只要中间机器保持运行,您就可以重新启动自己的本地机器(或将其装进包里带回家过夜,或其他方式),screen 将继续在中间机器上运行。(显然,如果任何一台远程机器出现故障,您将失去与该机器的连接,但其余的 screen 会话仍可正常运行。)

但最有可能的是,您指的是远程机器或唯一重新启动的机器,在这种情况下,没有简单的方法可以做到这一点。CryoPID 乍一听很有希望,但其网站称它不适用于屏幕。

但还有一个颇有希望的选择值得探索。(它是否适合您,很大程度上取决于您到底想做什么。)请在 github.com 上查看: https://github.com/skoneka/screen-session/tree/master/ScreenSession/

答案2

在极少数情况下这是可能的(见低温PID或者CryoPID2),但一般来说这比较困难,所以无法做到。

答案3

不要使用屏幕,而是使用小型 Virtualbox VM 并在其中工作。然后您可以将其休眠,重新启动主机,然后唤醒 VM(就像关闭并重新打开笔记本电脑的盖子一样)。通过这种方法,与远程主机的 SSH 连接可能不会持续,我认为无法保证这一点。

答案4

在所有这些中,Screen 本身相当边缘。您想要“保存”的不是 Screen,对吧?而是各种 Screen 会话中的环境,无论它们是什么。

您似乎在暗示,保存 Screen 会话会覆盖其中的 SSH 进程和所有种类。Screen 内部运行的内容与 Screen 无关,而这些内容很难“保存”……无论这在可实施的情况下真正意味着什么。

相关内容