远程连接自动断开的问题解决办法

文章目录
  1. 1. 1. 问题描述
  2. 2. 2. 解决办法
    1. 2.1. 2.1. screen解决方案
  3. 3. 3. screen详解
    1. 3.1. 3.1 安装screen
    2. 3.2. 3.2 创建一个新的窗口
    3. 3.3. 3.3 常用的命令
    4. 3.4. 4 引用

远程连接自动断开的问题解决办法

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的官方网站下载。

1
2
3
4
[root@TS-DEV ~]# yum install screen
[root@TS-DEV ~]# rpm -qa|grep screen
screen-4.0.3-4.el5
[root@TS-DEV ~]#

3.2 创建一个新的窗口

安装完成后,直接敲命令screen就可以启动它。但是这样启动的screen会话没有名字,实践上推荐为每个screen会话取一个名字,方便分辨:screen -S david

3.3 常用的命令

1
2
3
4
5
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的选项:

1
2
3
4
5
6
7
8
9
10
11
12
-A  将所有的视窗都调整为目前终端机的大小。
-d <作业名称>  将指定的screen作业离线。
-h <行数>  指定视窗的缓冲区行数。
-m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称>  恢复离线的screen作业。
-R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s  指定建立新视窗时,所要执行的shell。
-S <作业名称>  指定screen作业的名称。
-v  显示版本信息。
-x  恢复之前离线的screen作业。
-ls或--list  显示目前所有的screen作业。
-wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。

4 引用

screen还有更加丰富的 高级用法,请参考:

  1. GNU’s Screen 官方站点:http://www.gnu.org/software/screen/
  2. screen 常用工具命令:http://man.linuxde.net/screen
分享到 评论