Screen 远程会话管理神器

在使用服务器时一种比较棘手的情况,假如我正在服务器上跑某个程序时,本地的网络突然断掉了,此时远程会话会被关闭,程序自然也就停止了运行。

对于做深度学习的人来说,跑一个模型经常要花费几个小时甚至几天的时间。在这么长的时间里,偶尔的网络中断时是很有可能的。
而且,手残的我也会误操作关掉正在跑程序的终端🤦‍。

所以我迫切希望能有一个类似于后台会话的东西,网络中断或者终端关闭都不会产生影响到它。

GNU Screen 就是这样一个软件,可以很好的帮助我们在服务器上进行开发和测试。

1 安装

Screen 是很容易安装的,比如我们在 Ubuntu 服务器上可以直接执行下面的命令进行安装:

1
2
3
4

sudo apt install screen
# 如果提示找不到软件包,先执行一下更新检查
sudo apt update

安装完成后怎么判断是否安装成功呢?通常情况下是打印一下版本号看看有没有问题。

1
2
screen -v
# output: Screen version 4.00.03 (FAU) 23-Oct-06

如果成功输出版本号,那么安装完成了。

2 使用

你可以直接在 shell 中输入 screen 创建一个匿名后台会话,但通常情况下不建议你这样做,因为当你有多个匿名后台会话时会很难区分。

下面我们来创建一个名字 test 的后台会话,当然你可以用任何其他名字。

1
screen -S test

现在你已经进入了 test 这个后台会话中,你可以在这里开始你的工作,现在即使网络中断,也不会影响到这个后台会话的内容。

假如现在网络真的断了,你重新远程登录服务器后,只需要执行下面命令,就可以重新回到 test 后台会话中。

1
screen -r test

当然你也可以主动暂离后台会话,这是需要你先按住 CTRL 再点按 A 和 D 就可以回到远程登录的 shell 中。

如果你想完全退出并关闭这个后台会话,可以在 shell 中直接输入 exit 即可退出。

另外如果你不记得自己先前会话的叫什么了,或者是想查看一下现在有多少后台会话在运行,可以用下面这个命令:

1
screen -ls

上面就是 Screen 的一些基础用法,你可以在帮助中找到更多用法。

1
screen -h

3 特殊情况

  1. 因为某种情况没有分离先前会话,导致现在无法进入。

    1
    2
    3
    4
    # 强制分离
    screen -d
    # 进入会话
    screen -r test
  2. 修改会话名称

    1
    2
    3
    4
    5
    # 先进入要修改的会话中
    screen -r test
    # 然后按 Ctrl + A,接下输入
    :sessionname $new_session_name
    # $new_session_name 替换为修改成后的名称

4 参考

作者

Ailln

发布于

2019-01-16

更新于

2024-03-02

许可协议

评论