原因
我使用Next Terminal管理VPS,Next Terminal可以通过浏览器访问VPS,但也会因网络问题导致链接断开,如何在断开后快速恢复成了问题,对比各种方案Screen符合我的要求,以下具体做法:
安装及配置
Debian可以通过命令sudo apt install screen
安装Screen,安装完后如何实现登录VPS创建并恢复Screen会话就成了问题,这是我的做法,仅供参考。
在用户根目录下执行以下命令,创建脚本,命令如下:
cat > ~/.web-ssh.sh <<EOF
#!/bin/bash
# 检查是否有现有的 screen 会话
if screen -ls | grep -q "There is a screen on"; then
# 如果有,切换到该会话
# screen -r
screen -xRR
else
# 如果没有,创建名为next-terminal新会话并进入
screen -S next-terminal
fi
EOF
执行chmod +x ~/.web-ssh.sh
,赋予执行权限,接着修改 ~/.bashrc
文件,追加
cat >> ~/.bashrc <<EOF
if [ -f ~/.web-ssh.sh ]; then
source ~/.web-ssh.sh
fi
EOF
保存,这样每次SSH进入VPS都会进入之前创建的Screen会话。
Screen增强
Screen会话默认无法通过鼠标滚轮上下翻页,可以在用户根目录执行echo 'termcapinfo xterm* ti@:te@' >> ~/.screenrc
,重启VPS,再次进入后即可上下翻页。
使用问题
当在Screen中使用sudo su
切换到root用户,再切换到原来的用户,此时SSH终端会闪烁,因此需要在执行sudo su
前,先按组合键Ctrl + a
保存Screen会话,接着按d
退出Screen。
现在可以通过sudo su
切换为Root账户,再执行exit
退出Root账户回到普通账户,不要用su 用户名
要用exit
。
参考
让 Linux screen 提供的 “终端” 支持鼠标滚动