screen工具的使用
一、基本概念
screen是GNU计划开发的窗口管理器,大多数Linux发行版都能自主安装使用。该工具用于命令行终端切换,用户可以通过该软件同时连接多个本地或远程命令行会话。实际效果类似于Xshell对主机多ssh连接窗口,不过由于工作在会话层(ssh连接虽然处在应用层,但依赖于传输层的tcp连接,不依靠会话层,没有断点重连),只要主机上的会话不关闭,就能够随时恢复会话。因此screen常用于保持与远程主机之间的数据传输的稳定,即使网络连接中断,后续也能通过远程主机上的screen会话恢复。
二、安装
许多Linux发行版都会自带screen,如果没有需要通过包管理器安装
#使用ubuntu|debian的apt$ sudo apt install screen
二、会话命令
基本格式:
screen [-opts] [cmd [args]] 或
screen -r [host.tty] #使用完整名称 host.tty = 主机名.会话名称
最常用的几个命令:
| 参数 | 释义 |
|---|---|
| -r session_name -R session_name | 读取没非活动的会话进程,例如:screen -r session_name 读取会话,如果没有就新建一个 |
| -d | 休眠(退出)一个活动中的会话(不加参数则退出当前会话),例如:screen -d session_name |
| -S sockname | 创建会话并以sockname命名(-r时使用这个),会话在list中名称格式为 |
| -ls -list | 列出所有的活动或非活动会话 |
| exit(非screen参数) | 退出当前会话,并清除。ps:不要在主屏幕使用 |
| -d | 休眠当前会话(变为detached状态) ,并退出到主屏幕 |
其他命令:
| 参数 | 释义 |
|---|---|
| -wipe | 当程序崩溃时,会残留会话文件(dead状态),使用该命令自动清除 |
| -x -X | 加入一个活动状态(attached状态)的会话 不加入会话,执行screen命令,常与-S联合使用 |
| -U | 告诉当前会话使用utf-8编码,会清除屏幕内容,如果在主会话使用则用utf-8建立一个默认会话 |
值得注意的是,可以是使用-x参数共享一个活动中的screen。只要使用同一角色登陆系统,screen -x session 同一个会话,就能同步两边操作,即共享屏幕。
-S在新建会话时可以立即使用系统命令,此时会建立会话并执行,在命令执行结束会话就会退出并释放。
xxxxxxxxxxddf@ubuntu:~$ screen -S text vim test.txt #在会话中新建一个txt
-X能执行screen内部命令(等同于窗口命令Ctrl+a),在某些版本下可以模拟键盘输入系统命令,例如:
xxxxxxxxxx# 杀死 mysession 会话中的当前窗口screen -S mysession -X kill# 休眠会话screen -S mysession -X detach# 在 mysession 会话中新建一个窗口,并运行 top 命令screen -S mysession -X screen -t "monitor" top
另外tty工具常跟screen工具一同使用,可以查看当前会话是第几个shell,使用队列存储,主会话也是占用一个位置的。
xxxxxxxxxxddf@ubuntu:~$ tty/dev/pts/2
三、窗口命令
screen可以在每个会话下打开多个子窗口,每个窗口类似于一个新会话,所有被广播的会话能跟随这个操作。新建立的回话默认在0号窗口,支持键盘快捷键,在窗口中使用以下操作可以得到不同结果:
| 快捷键 | 结果 |
|---|---|
| Ctrl-a c | 在当前的会话下面生成一个新的窗口并切换过去 |
| Ctrl+a d | 暂时退出会话(休眠) |
| Ctrl-a a | 返回上一个窗口(来回切换) |
| Ctrl-a n | 切换到下一序号的窗口 |
| Ctrl-a p | 切换到上一序号的窗口 |
| Ctrl-a num | 跳转到对应序号的窗口 |
| Ctrl-a " | 输入序号跳转 |
| Ctrl-a w | 显示当前窗口所有窗口 |
| Ctrl-a k | 释放当前窗口 |
在使用screen的过程中要注意窗口位置,不要一不小心把链接关掉了!!
本文内容参考:https://blog.csdn.net/weixin_39925939/article/details/121033427