screen 命令详解
补充知识:
查看Linux内核版本的命令:
- cat /proc/version
- uname -a
查看Linux系统版本的命令:
- lsb_release -a
这个命令列出所有版本信息。
这个命令适用于所有的Linux发行版。- cat /etc/redhat-release
这个命令只使用有redhat版的Linux- cat /etc/issue
适用于所有的Linux发行版
1. 简介
GUN Screen 可以看作是窗口管理器的命令行界面版本,它提供了统一的管理多个会话的界面和相应的功能。
2. 语法
screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-s][-S <作业名称>]
参数说明:
-A 将所有的视窗都调整为目前终端机的大小
-d <作业名称> 将指定的screen作业离线
-h <行数> 指定视窗的缓冲区行数
-m 即使目前已在作业中的screen作业,仍强制建立新的screen作业
-r <作业名称> 恢复离线的screen作业
-R 先视图恢复离线的作业,若找不到离线的作业,即建立新的screen作业
-s 指定建立新视窗时,所要执行的shell
-S <作业名称> 指定screen作业的名称
-v 显示版本信息
-x 恢复之前离线的screen作业
-ls或–list 显示目前所有的screen作业
-wipe 检查目前所有的screen作业,并删除无法使用的screen作业
3. 常用screen参数
screen -S yourname -> 新建一个叫yourname的session
screen -ls -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session
screen -d yourname -> 远程detach某个session
screen -d -r yourname -> 结束当前session并回到yourname这个session
在每个screen session下,所有命令都以ctrl+a开始(只列出一些常用的)
C-a ? --显示所有键绑定信息
C-a d --detach,暂时离开当前session,每个window内运行的进程的都在继续运行
C-a k --杀死指定k的screen
C-a w – 显示所有窗口列表
C-a c – 创建一个新的运行shell的窗口并切换到该窗口
C-a n – Next,切换到下一个 window
C-a p – Previous,切换到前一个 window
C-a 0…9 – 切换到第 0…9 个 window
C-a x – 锁住当前的 window,需用用户密码解锁
4. 使用screen
- 安装screen
以redhat为例:
[root@TS-DEV ~]# yum install screen
[root@TS-DEV ~]# rpm -qa|grep screen
screen-4.0.3-4.el5
- 创建一个新的窗口
[root@TS-DEV ~]# screen -S david
- 清除dead会话
[root@TS-DEV ~]# screen -wipe
5. 高级应用
- 会话共享
还有一种比较好玩的会话恢复,可以实现会话共享。假设你在和朋友在不同地点以相同用户登录一台机器,然后你创建一个screen会话,你朋友可以在他的终端上命令:
[root@TS-DEV ~]# screen -x
这个命令会将你朋友的终端Attach到你的Screen会话上,并且你的终端不会被Detach。这样你就可以和朋友共享同一个会话了,如果你们当前又处于同一个窗口,那就相当于坐在同一个显示器前面,你的操作会同步演示给你朋友,你朋友的操作也会同步演示给你。当然,如果你们切换到这个会话的不同窗口中去,那还是可以分别进行不同的操作的。
- 会话锁定与解锁
Screen允许使用快捷键C-a s锁定会话。锁定以后,再进行任何输入屏幕都不会再有反应了。但是要注意虽然屏幕上看不到反应,但你的输入都会被Screen中的进程接收到。快捷键C-a q可以解锁一个会话。
也可以使用C-a x锁定会话,不同的是这样锁定之后,会话会被Screen所属用户的密码保护,需要输入密码才能继续访问这个会话。
- 发送命令到screen会话
在Screen会话之外,可以通过screen命令操作一个Screen会话,这也为使用Screen作为脚本程序增加了便利。这里只看一个例子,体会一下在会话之外对Screen的操作:
[root@TS-DEV ~]# screen -S sandy -X screen ping www.baidu.com
这个命令在一个叫做sandy的screen会话中创建一个新窗口,并在其中运行ping命令。
- 屏幕分割
现在显示器那么大,将一个屏幕分割成不同区域显示不同的Screen窗口显然是个很酷的事情。可以使用快捷键C-a S将显示器水平分割,Screen 4.00.03版本以后,也支持垂直分屏,快捷键是C-a |。分屏以后,可以使用C-a <tab>在各个区块间切换,每一区块上都可以创建窗口并在其中运行进程。
可以用C-a X快捷键关闭当前焦点所在的屏幕区块,也可以用C-a Q关闭除当前区块之外其他的所有区块。关闭的区块中的窗口并不会关闭,还可以通过窗口切换找到它。