文章目录
- 一、screen
- 二、功能
- 三、使用
- 3.1 安装
- 3.2 常用参数
- 3.3 状态
- 3.4 使用
- 3.4.1 终端列表
- 3.4.2 新建screen
- 3.4.3 detached
- 3.4.4 回到终端
- 3.4.5 清除终端
一、screen
screen为多视窗管理程序。在服务器上搭建一些服务的时候,经常要用到screen命令。例如某些服务开启时需要占据一整个控制台,如果关闭了就会导致进程终止。此时就可使用screen来在服务器上开启多个视窗(screen),以容纳运行不同的任务。
二、功能
screen的功能大体分为三个:
- 会话恢复
- 只要screen服务没有被停止,则在其内部运行的会话都可以恢复
- 即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制,只要再次登录到主机上执行
screen -r
就可以恢复会话 - 在暂时离开的时候,也可执行分离命令detach,保证里面的程序正常运行的情况下让screen挂起
- 多窗口
- 在screen环境下,所有的会话都独立运行,拥有各自的编号、输入、输出和窗口缓存
- 用户可通过快捷键在不同的窗口下切换,并可自由地重定向各个窗口的输入和输出
- 会话共享
- screen可让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性
三、使用
3.1 安装
[root@server ~]# yum install -y screen
[root@server ~]# screen -v
Screen version 4.01.00devel (GNU) 2-May-06
3.2 常用参数
-A Adapt all windows to the new display width & height.
-d <作业名称> 将指定的screen作业离线放入后台
-h <行数> 指定视窗的缓冲区行数
-r <作业名称> 恢复离线的screen作业
-R 先试图恢复离线的作业,若找不到离线的作业,则建立新的screen作业
-s 指定建立新screen时所要执行的shell Shell to execute rather than $SHELL
-S <作业名称> 指定screen作业的名称 Name this session <pid>.sockname instead of <pid>.<tty>.<host>
-ls or --list 显示目前所有的screen作业
-wipe 检查目前所有的screen作业,并删除已经无法使用的作用
3.3 状态
通常情况,screen创建的虚拟终端,有两个工作模式:
- attached,表示当前screen正在作为主终端使用,为活跃状态
- detached,表示当前screen正在后台使用,为非激活状态
3.4 使用
3.4.1 终端列表
[root@server ~]# screen -ls
No Sockets found in /var/run/screen/S-root.[root@server ~]#
3.4.2 新建screen
[root@server ~]# screen -S hello# pid.name
[root@server ~]# screen -ls
There is a screen on:6359.hello (Attached)
1 Socket in /var/run/screen/S-root.
3.4.3 detached
# 在screen会话内,按Ctrl + a + d,即可保持这个screen到后台并返回到主终端
[detached from 6359.hello]# 状态已发生变化 -> Detached
[root@server ~]# screen -ls
There is a screen on:6359.hello (Detached)
1 Socket in /var/run/screen/S-root.
3.4.4 回到终端
通过-r
参数回到指定screen终端,其内容仍是之前返回主终端前的内容。
[root@server ~]# screen -r hello
[root@server ~]# screen -ls
There is a screen on:6359.hello (Attached)
1 Socket in /var/run/screen/S-root.[root@server ~]#
3.4.5 清除终端
可在终端内直接键入exit
或使用按键Ctrl + D
,便可清除掉当前终端。
[screen is terminating]
[root@server ~]# screen -ls
No Sockets found in /var/run/screen/S-root.
参考:
screen命令