防止远程操做中断的杀手工具--GNUScreen


参考连接


("开源慕课平台")shell

场景描述

系统管理员常常经过ssh或者telnet远程登陆到Linux服务器来进行远程管理,须要运行一些须要很长时间才能完成的任务,必须等待他们执行完毕,好比远程操做备份,或者传输一些大的文件。若是须要临时断开,或者发生意外网络中断和终端意外断开,你正在执行的任务就会被kill掉。centos

为了解决这样的问题,GNU screen就是防止这种状况的一种方法。服务器

什么是screen


screenGNU计划中用于命令行终端切换的自由软件,用户能够经过链接多个本地或者远程的命令行会话,并在其间自由切换。screen能够看作是窗口管理器的命令行界面版本,功能很是强大。主要功能有:会话恢复、多窗口、会话共享。网络

yum  install screen   #安装命令session

rpm  -qi screen   #安装完成以后不要急于使用该命令,使用该命令查看其描述信息,这是一种良好的习惯运维

固然若是你以为你的英文能力足够好的话就能够直接查看man手册了。ssh

screen语法

#screen [-AmRvx -ls -wipe][-d <做业名称>][-h <行数>] [-r <做业名称>] -s [-S <做业名称>]ide

screen选项

      -A 将全部的视窗都调整为目前终端的大小spa

    -d <做业名称> 将制定的screen做业离线命令行

    -h <行数>   制定视窗的缓冲区行数

    -m 即便目前已在做业中的screen做业,仍强制创建新的screen做业

    -r <做业名称> 恢复离线的screen做业

    -R 先试图恢复离线的做业。若找不到离线的做业,即创建新的screen做业

    -s 制定创建新视窗时,所要执行的shell

    -S <做业名称> 制定screen做业的名称

    -v 显示版本信息

    -x 加入到一个活动的会话里面(会话共享)

    -ls 显示目前全部的screen做业

    --list

    -wipe 检查目前全部的screen做业,并删除已经没法使用的screen做业

screen经常使用的参数

创建一个默认的screen会话

[root@centos6  ~]#screen  #窗口大小和终端相同的默认screen会话

列出当前全部的会话

      

[root@centos6  ~]#screen -ls   #列出活动的会话和已经分离的会话

    There is a screen on:

             2581pxs-0.centos6       (Attached)

    1 Socket in /var/run/screen/S-root.

 

wKioL1nBHv-w1tLhAACCy8EQOkI502.png-wh_50

新建一个叫作session1的会话

[root@centos6  ~]#screen -S session1

[root@centos6  ~]#screen -ls

There  is a screen on:

     1914.session1   (Attached)

1  Socket in /var/run/screen/S-root.

回到session1这个会话

>为演示效果 session1中编辑一个文件,而后直接关闭终端不正常的断开。

>从新链接远程主机,执行screen -rsession1

 

wKioL1nBHxPR4uKAAADV2h_xayk102.png-wh_50

远程detach某个会话

screen  -d session1

从新打开一个终端,使用screen -d选项远程分离会话,分离以前和以后效果图以下,可看出分离会打断会话的使用,但不打断其任务的执行,依旧可使用screen -r session1来恢复。

wKiom1nBH4bTIydYAAD3R5Mbrcs403.png-wh_50

wKioL1nBH2KQCxARAAEutNdPdFw948.png-wh_50

*结束当前session并回到sessionname这个session*

[root@centos6  ~]#screen -S session2

[root@centos6  ~]#screen –ls

[root@centos6  ~]#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,?查看这里再也不详述

wKioL1nBH3GhZHRlAADhF10umw8582.png-wh_50

会话共享


咱们能够从QQ的远程桌面操做联想到screen的会话共享,有时咱们遇到某个问题特别棘手,就可使用会话共享的方式让别的技术大牛来帮助你解决问题,你能够看到他作的全部操做,固然也能够对权限进行限制,属于screen的高级应用,这里只演示简单的会话共享。

>终端1执行 

   [root@centos6 ~]#screen -S help

>终端2执行

[root@centos6  ~]#screen -ls

There  is a screen on:

        2511.help       (Attached)

1  Socket in /var/run/screen/S-root.

[root@centos6  ~]#screen -x help

这时两个终端之间就创建了会话共享了,更多的应用场景须要每一位运维工程师去挖掘。

相关文章
相关标签/搜索