screen不间断会话
screen
screen
不间断会话服务,可以让程序在后台运行,不占用当前终端的屏幕。
# 进入sreen环境
screen
# 断开(detached)screen环境
ctrl+a d
# 查看screen的会话
screen -ls
# 恢复会话
screen -r sessionid
安装 screen 工具
# debian系列安装
apt install screen -y
# RHEL系列Linux中,你需要先安装 epel-release 才可以安装 screen
yum install screen -y
screen常用操作
Screen
有两
种状态
:
attached
(连接
状态)- 当 “screen” 处于
attached
状态时,用户可以在终端窗口中看到 “screen” 正在运行的虚拟终端的输出。
- 当 “screen” 处于
detached
(断开
状态)- 当 “screen” 处于
detached
状态时,虚拟终端仍在后台运行,但用户无法在终端窗口中看到其输出。
- 当 “screen” 处于
恢复或创建会话 -R(推荐)
screen -R重新连接会话,不存在会话则启动新会话。
## -R 创建或恢复会话
## -U 使用UTF-8
screen -R 会话名
screen -RU 会话名
创建会话
# 创建会话
screen -S 会话名
快速创建一个screen会话–懒人方法
# 直接在执行的命令前加上screen 即可创建不间断会话
screen vim test.txt
查看screen会话列表
在 B主机
上,通过 ssh 连接到 A主机
,并查通过 -ls 选项看当前已经存在的 screen 会话.
ssh [email protected]
# 查看screen会话
screen -ls
# attached(连接状态)
#There is a screen on: 2107.it (01/14/21 07:30:27) (Attached) 1 Socket in /run/screen/S-it
加入到该会话
# 加入到screen会话it
screen -x it
将指定的screen会话离线
通常用于将无法恢复的窗口下线
# 将指定的screen作业离线
screen -d 会话名|会话ID
恢复会话
# 恢复会话
screen -r it
删除死屏
# 删除死屏
screen -wipe
退出会话
# 退出会话
screen -S 会话名|会话ID -X quit
screen屏幕共享
这样就可以两边共享一个 screen 会话,不管谁运行什么命令,另一个都可以看到;
当你需要退出会话时,你可以运行 exit 来退出会话(当运行 exit 时,两边都会退出 screen 会话。),也可以通过Ctrl+A,D(Ctrl + A 然后按 D,退出单个会话)。
# A和B都ssh登陆一台服务器
A$ ssh [email protected]
B$ ssh [email protected]
# A创建一个会话
A$ scrren -S remote_hlep
# B加入这个会话
A$ scrren -x remote_hlep
# A在终端的操作,B可以实时看到
screen分屏
# 创建已一个 screen 会话
it@serverc:~$ screen -S test
在当前窗口内创建会话窗口
但此时下面屏幕什么还没有,你需要通过Ctrl
+A
,然后按C
在下面屏幕中创建终端
这样我们就可以在下面屏幕执行命令了,如果我们需要在不同的屏幕之间切换,可以通过 按Ctrl
+A
,然后再按Tab
来切换。
开启分屏
按Ctrl
+A
,然后按Shift
+S
开启分屏
;
切换分屏窗口
按Ctrl
+A
,然后再按Tab
,切换到下面屏幕
当需要退出时,我们可以通过 exit
命令退出(在一个屏幕运行 exit
命令后,只是终端退出了,分屏的状态并没有退出,所以你需要通过前面的方法,切换到另一个屏幕上,再次运行 exit
退出)。
screen常见问题
开机自动加入screen中
将以下脚本内容添加到/root/.bashrc
中;
# 检查是否存在detached(断开)或attached(连接)状态的screen会话
if session=$(screen -list | grep -i '\b(detached|attached)\b'); then
# 提取最后一个screen会话的ID并连接到其中
## -d:分离(detach)当前会话,将会话置于后台运行
## -R:连接到会话,若不存在则新建这个会话
## -U:启用 UTF-8 模式,允许在会话中使用 Unicode 字符
screen -dRU $(echo "$session" | tail -n1 | awk '{print $1}' | cut -d '.' -f2)
else
# 不存在任何screen会话,创建一个新的并连接到其中
screen -dRU terminal
fi
screen断开后screen -r不能进入断开的会话
https://blog.csdn.net/JoeBlackzqq/article/details/92564776
screen -D -r 会话id