Bootstrap

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” 正在运行的虚拟终端的输出。
  • detached (断开状态)
    • 当 “screen” 处于 detached 状态时,虚拟终端仍在后台运行,但用户无法在终端窗口中看到其输出。

恢复或创建会话 -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
;