Screen 远程会话管理神器
在使用服务器时一种比较棘手的情况,假如我正在服务器上跑某个程序时,本地的网络突然断掉了,此时远程会话会被关闭,程序自然也就停止了运行。
对于做深度学习的人来说,跑一个模型经常要花费几个小时甚至几天的时间。在这么长的时间里,偶尔的网络中断时是很有可能的。
而且,手残的我也会误操作关掉正在跑程序的终端🤦。
所以我迫切希望能有一个类似于后台会话的东西,网络中断或者终端关闭都不会产生影响到它。
GNU Screen 就是这样一个软件,可以很好的帮助我们在服务器上进行开发和测试。
1 安装
Screen 是很容易安装的,比如我们在 Ubuntu 服务器上可以直接执行下面的命令进行安装:
1 |
|
安装完成后怎么判断是否安装成功呢?通常情况下是打印一下版本号看看有没有问题。
1 | screen -v |
如果成功输出版本号,那么安装完成了。
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
2
3
4# 强制分离
screen -d
# 进入会话
screen -r test修改会话名称
1
2
3
4
5# 先进入要修改的会话中
screen -r test
# 然后按 Ctrl + A,接下输入
:sessionname $new_session_name
# $new_session_name 替换为修改成后的名称
4 参考
Screen 远程会话管理神器