当前位置:   article > 正文

SSH远程会话管理工具 - screen使用教程_ssh screen

ssh screen

在刚接触Linux时最怕的就是SSH远程登录Linux VPS编译安装程序时(比如安装lnmp)网络突然断开,或者其他情况导致不得不与远程SSH服务器链接断开,远程执行的命令也被迫停止,只能重新连接,重新运行。今天就给VPSer们介绍一款远程会话管理工具 - screen命令

screen 的作用是什么呢?

使用telnet或SSH远程登录linux时,如果连接非正常中断,重新连接时,系统将开一个新的session,无法恢复原来的session.screen命令可以解决这个问题。Screen工具是一个终端多路转接器,在本质上,这意味着你能够使用一个单一的终端窗口运行多终端的应用。

1.screen命令总结

Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。

2、如何安装screen命令?

除部分精简的系统或者定制的系统大部分都安装了screen命令,也可以自己安装

CentOS系统可以执行:yum install screen

Debian/Ubuntu系统执行:apt-get install screen

如果提示screen: command not found 命令不存,在可以执行:yum install screen 或 apt-get install screen安装。

3、screen命令使用方法?

3.1 语法

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

3.2 选项

选项

描述

-A

将所有的视窗都调整为目前终端机的大小

-d <作业名称>

将指定的screen作业离线

-h <行数>

指定视窗的缓冲区行数

-m

即使目前已在作业中的screen作业,仍强制建立新的screen作业

-R

先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业

-s

指定建立新视窗时,所要执行的shell

-S <作业名称>

指定screen作业的名称

-v

显示版本信息

-ls 或 --list

显示目前所有screen作业

-wipe

检查目前所有的screen作业,并删除已经无法使用的screen作业

3.3 常用的使用方法举例

创建screen,screen会话取一个baoshan的名字,方便分辩,执行:

1  .  screen -S baoshan

2.  运行你需要的执行的代码


3.  Ctrl+A D(即按住Ctrl,依次再按A,D),使得前台的命令窗口会话中的程序关闭,后台仍在运行。

这步操作,会把你的前台客户端断了,但后台还是在跑的。不用怕。此时服务器属于(Detached)状态。

如果你不想把你客户端命令窗口断了,因为断了你就无法实时看到后台输出结果,那就只执行前2步即可。

一旦你这边网络断了,你 前台命令窗口还是会断了,哈哈。但是放心,后台还是在跑。此时服务器属于(Detached)状态

 

如果你这边网络断了,你 前台命令窗口会断了,就无法看到前台输出结果,但可以重新连接,恢复前台screen会话输出显示。可以再执行:

screen -r baoshan

--------------------------------------------------

查看当前的screen进程
scren -ls

[root@base ~]# screen -ls

There are screens on:

       1533.pts-0.base       (Detached)

       1508.jock    (Detached)

       1493.tom     (Detached)

       1478.david (Detached)

        29894.python    (11/10/18 01:31:35)    (Attached)
Sockets in /var/run/screen/S-root.

1478.david (Detached)  1478 表示该screen的进程号,后面你想人为关闭该会话,就kill -9  1478.就变成dead状态,然后你看他不爽,你还可以screen -wipe 会自动把dead状态的screen清除掉。 david表示你前面给screen取的名字 

(Detached)表示前台screen会话已断开了(但服务器后台程序还在跑),但在随后重新连接(attach)该会话,会在前台客户端显示当前的输出。

(Dead???)表示screen已经死亡,后台肯定不在跑,你也没法继续重新连接会话了。

(Attached)表示screen后台还在正常跑着,前台也正常连接着,这是正常模式。

重新连接会话,只对detached状态有效。1533 是上面screen -ls 你根据你的screen取的别名  的前面的进程号码。

screen -r 1533
   
   
  • 1

 

关闭screen的会话,一般对attached状态操作,1533同上面的一样

执行:exit ,会提示:[screen is terminating],表示已经成功退出screen会话。

或者直接: kill -9 1533 #杀死进程
  • 1
screen -ls #查看里程状态
 
There are screens on:
 
       1533.pts-0.base       (Dead ???) #已杀死的进程
 
       1508.jock    (Detached)
 
       1493.tom     (Detached)
 
       1478.david (Detached)
 
Remove dead screens with 'screen -wipe'.
4 Sockets in /var/run/screen/S-root.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

清除dead会话

如果由于某种原因其中一个会话死掉(如人为杀掉会话),这里screen -list 会显示该会话为dead状态,使用screen -wipe命令清除该会话

[root@base ~]# screen -wipe 1533 # 清空死亡进程
 
There is a screen on:
 
       1533.pts-0.base       (Removed)
 
1 socket wiped out.
 
No Sockets found in /var/run/screen/S-root.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

screen用在网络环境不好的地方非常的有用。

建议各位运行程序的时候都开启screen

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/708402
推荐阅读
相关标签
  

闽ICP备14008679号