screen是一个终端复用工具,用于在ssh中新建多个窗口,可用于后台运行,在screen运行的程序就算ssh中断也会继续运行。
为了方便讨论,我们把登录ssh后显示的终端界面称之为main会话,screen命令所建立的会话称之为screen会话。
Ubuntu安装
sudo apt install screen
CentOS安装
yum install screen
命令格式(注意大小写)
screen [-opts] [cmd [args]]
ssh登录linux系统,进入main会话。
- 列出所有screen会话
screen -ls
#当前没有任何会话产生
- 新建一个screen,并欸切换过去。此会话名称随机,单独不加参数的
screen
命令只能在main会话中使用
screen
#此时新建了一个pid为45833 ,名为pts-0.ubuntu的screen会话
会话的两种状态:
Attached
(已附加)
- 表示会话你正在使用该会话或其他人用共享了此会话。
- 处于
Attached
状态的会话无法通过screen -r
命令返回。需要先让会话保持分离状态screen -d
Detached
(已分离)
- 表示会话正在后台运行,未连接到任何终端。
- 处于
状态的会话可通过Detached
screen -r
命令返回。
- 新建名为name的screen会话并切换进去。
screen -S [name]
#新建一个名为test的screen会话screen -S test
#新建一个名为test2的screen会话screen -S test
2
由于没有进行会话分离操作,这种嵌套创造会让所有的screen会话保持为Attached
状态。
- 回到某个screen会话
screen -r [pid/name]
- 先尝试回到某screen会话,若不存在则创建
screen -R [name]
处于Attached状态的会话无法通过screen -r
,screen -R
命令返回。
#会提示There is no screen to be resumed matching 47077screen -r 47077
- 指定作业离线
screen -d [pid/name
]
#指定pid为47077的screen会话离线,名为test的会话变为Detached状态。screen -d 47077
当screen会话处于前台运行时,快捷键Ctrl + a + d
可直接使会话转换为
。Detached
状态
- 退出当前会话
当screen会话处于前台运行时,exit
或快捷键Ctrl + d
可直接退出。
screen多窗口管理。
窗口和screen会话不是一个概念,main会话中无此功能。当处于screen会话中时可创建多个窗口并切换使用
当前处于名为test的screen会话中
- 创建新窗口输
Ctrl + a + c
创建新窗口输入test1以作标记
再次按下Ctrl + a + c
创建新窗口输入test2以作标记
- 切换到上一个窗口(循环切换)
Ctrl + a + p
按下Ctrl + a + p
便切换回test1,注意连续切换时所有按键都要松开后再按下。
- 切换到下一个窗口(循环切换)
Ctrl + a + n