防止远程操作中断的杀手工具--GNUScreen
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了防止远程操作中断的杀手工具--GNUScreen相关的知识,希望对你有一定的参考价值。
参考链接
场景描述
系统管理员经常通过ssh或者telnet远程登录到Linux服务器来进行远程管理,需要运行一些需要很长时间才能完成的任务,必须等待他们执行完毕,比如远程操作备份,或者传输一些大的文件。如果需要临时断开,或者发生意外网络中断和终端意外断开,你正在执行的任务就会被kill掉。
为了解决这样的问题,GNU screen就是防止这种情况的一种方法。
什么是screen
screen是GNU计划中用于命令行终端切换的自由软件,用户可以通过连接多个本地或者远程的命令行会话,并在其间自由切换。screen可以看做是窗口管理器的命令行界面版本,功能非常强大。主要功能有:会话恢复、多窗口、会话共享。
yum install screen #安装命令 rpm -qi screen #安装完成之后不要急于使用该命令,使用该命令查看其描述信息,这是一种良好的习惯 |
当然如果你觉得你的英文能力足够好的话就可以直接查看man手册了。
screen语法
#screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>] [-r <作业名称>] -s [-S <作业名称>] |
screen选项
-A 将所有的视窗都调整为目前终端的大小 -d <作业名称> 将制定的screen作业离线 -h <行数> 制定视窗的缓冲区行数 -m 即使目前已在作业中的screen作业,仍强制建立新的screen作业 -r <作业名称> 恢复离线的screen作业 -R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业 -s 制定建立新视窗时,所要执行的shell -S <作业名称> 制定screen作业的名称 -v 显示版本信息 -x 加入到一个活动的会话里面(会话共享) -ls 显示目前所有的screen作业 --list -wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业 |
screen常用的参数
建立一个默认的screen会话
[[email protected] ~]#screen #窗口大小和终端相同的默认screen会话 |
列出当前所有的会话
[[email protected] ~]#screen -ls #列出活动的会话和已经分离的会话 There is a screen on: 2581pxs-0.centos6 (Attached) 1 Socket in /var/run/screen/S-root. |
新建一个叫做session1的会话
[[email protected] ~]#screen -S session1 [[email protected] ~]#screen -ls There is a screen on: 1914.session1 (Attached) 1 Socket in /var/run/screen/S-root. |
回到session1这个会话
>为演示效果 在session1中编辑一个文件,然后直接关闭终端不正常的断开。
>重新连接远程主机,执行screen -rsession1
远程detach某个会话
screen -d session1 |
重新打开一个终端,使用screen -d选项远程分离会话,分离之前和之后效果图如下,可看出分离会打断会话的使用,但不打断其任务的执行,依旧可以使用screen -r session1来恢复。
*结束当前session并回到sessionname这个session*
[[email protected] ~]#screen -S session2 [[email protected] ~]#screen –ls [[email protected] ~]#screen -d -r session1 #结束当前的session2,并回到session1会话 |
screen会话中的组合键
都是以ctrl + a开始。这里的ctrl+a是指按下ctrl+a ,松开,然后再按下其他键,笔者在最初使用时以为是同时按下,很别扭,仔细读过文档才发现是这种用法,希望读者不要掉进这个小坑里。
Ctrl+a ? 显示所有键绑定信息 Ctrl+a c 创建一个新的运行shell的窗口并切换到该窗口 Ctrl+a Ctrl+a n Next,切换到下一个窗口 Ctrl+a p Previous,切换到前一个窗口 Ctrl+a 0..9 切换到第0..9个窗口 Ctrl+a [space] 从窗口0循序切换到窗口9 Ctrl+a C-a 在最近使用两个窗口之间切换(C和a同时按下) Ctrl+a x 锁住当前的窗口,需要用户密码解锁 Ctrl+a d 暂时离开当前的会话,当不影响其会话中的任务执行 #比较常用,可以多使用 Ctrl+a z 把当前会话放到后台执行,可以使用jobs,fg等命令进行管理 Ctrl+a w 显示所有的窗口列表 Ctrl+a t Time,显示当前时间和系统的负载 Ctrl+a K 强行关闭当前的窗口
|
在窗口的最顶端标识,并不在命令提示符中显示,请读者多注意观察。
对于其中的组合键读者无需死记,更多的使用信息使用Ctrl+a,?查看这里不再详述
会话共享
我们可以从QQ的远程桌面操作联想到screen的会话共享,有时我们遇到某个问题特别棘手,就可以使用会话共享的方式让别的技术大牛来帮助你解决问题,你可以看到他做的所有操作,当然也可以对权限进行限制,属于screen的高级应用,这里只演示简单的会话共享。
>终端1执行
[[email protected] ~]#screen -S help |
>终端2执行
[[email protected] ~]#screen -ls There is a screen on: 2511.help (Attached) 1 Socket in /var/run/screen/S-root. [[email protected] ~]#screen -x help |
这时两个终端之间就建立了会话共享了,更多的应用场景需要每一位运维工程师去挖掘。
本文出自 “Keep simple keep stupid” 博客,请务必保留此出处http://yangzhiheng.blog.51cto.com/11586378/1966974
以上是关于防止远程操作中断的杀手工具--GNUScreen的主要内容,如果未能解决你的问题,请参考以下文章