1. 问题描述
我们都知道,作为站群服务器,预设一般都是被动的等待客户端的连线到来。但对基于 ssh 协议的 xshell 的运用,总是出现自动断开的情况。
但是我们经常需要执行一些需要很长时间才能完成的任务,比如系统备份、 ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远端终端视窗,因为它们执行的时间太长了。必须等待它们执行完毕,在此期间不能关掉视窗或者断开连线,否则这个任务就会被杀掉,一切半途而废了。
2. 解决办法
可以将该会话 “储存”,只要远端站群服务器不关闭,该会话就一直进行,下次需要的时候 重新连线即可。那么如何储存当前会话呢?
答案就是神器:screen
2.1. screen 站群解决方案
先看其简介:
Screen 是一款由 GNU 计划开发的用于命令列终端切换的自由站群软件。使用者可以通过该站群软件同时连线多个本地或远端的命令列会话,并在其间自由切换。
由简介我们知道,screen 可以在不同回话之间切换,那么,我们利用它的这个效能,把需要的会话 “储存”,等到第二天用的使用再 “切换” 回 当时的会话即可。
怎么操作呢?我们先看一个简单粗暴地例子:我需要执行一个跑一夜的程式,那么在巡行程式之前先进行一步操作:
1. screen -S myOneNight
这句话的意思是,建立了一个叫 myOneNight 的 screen 作业会话。
2. 现在,再执行你的 执行一夜的程式码。。。。
3. 关机,或者去玩其他事情。
4. 第二天,再开启 shell 执行命令:screen -r myOneNight 我们发现,昨天的程式还在正常执行。爽。
3. screen 详解
3.1 安装 screen
其实流行的 Linux 发行版(例如 Red Hat Enterprise Linux)通常会自带 screen 实用程式,如果没有的话,可以从 GNU screen 的官方网站下载。
[root@TS-DEV ~]# yum install screen
[root@TS-DEV ~]# rpm -qa|grep screen
screen-4.0.3-4.el5
[root@TS-DEV ~]#
1
2
3
4
3.2 建立一个新的视窗
安装完成后,直接敲命令 screen 就可以启动它。但是这样启动的 screen 会话没有名字,实践上推荐为每个 screen 会话取一个名字,方便分辨:screen -S david
3.3 常用的命令
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