当使用 ssh 远程登陆到服务器,使用命令执行一个耗时任务时,常会因为网络不稳定或 AIStation 网页刷新而与服务器的连接断开,在重新连接后,命令和打印的输出内容不见踪影,此时可以用 screen 工具解决这个问题。
使用 screen 后,执行一个耗时任务,只需要连到服务器敲一下命令,然后断开与服务器的连接,这个任务依然在服务器上运行,重新与服务器建立 ssh 连接后依然能看到它在运行。
- 安装 screen,Ubuntu 和 Debian 系统的安装命令:
apt -y install screen或apt install screen,在安装前可能需要更新 apt,键入apt update即可更新本地包索引 - 创建窗口,
screen -S [screen name],进去之后是一个全新的界面 - 执行耗时任务,键入自己的命令,比如
ping baidu.com - 退出当前窗口,Ctrl+A+D,回到终端(上一个界面)
- 查看所有正在运行的窗口(返回 name 和 ID):
screen –ls - 重新进入指定的窗口:
screen –r [ID or screen_name] - 终止窗口:
screen –S [ID or screen_name] -X quit
示例:
- 创建一个窗口:
screen –S test - 运行示例程序:
python test.py - 退回终端:Ctrl+A+D(不能使用 exit 命令)
- 此时再退出登录或者连接中断不影响
- 重新打开窗口:
screen –r test(不记得窗口名可以screen -ls 查看)
在进入 screen 会话中如果要使用鼠标进行上下滚动,必须要先进入该 screen 的回滚模式才能进行上下滚动
- 进入回滚模式:首先按 Ctrl+A,然后按 Esc
- 使用鼠标滚轮进行上下滑动
- 使用 Esc 即可离开回滚模式
在使用screen -r (id)重新连接程序 screen 界面时,出现:There is no screen to be resumed matching xxxxxx。这是因为,突然断网,之前的 screen 还是处于打开状态的,1 个 screen 无法同时打开 2 次,所以无法正常打开 screen。
方法如下:
首先使用screen -d xxxx(id)退出
然后使用screen -r xxx(id)重新连接
浙公网安备 33010602011771号