原链接:http://blog.pcwuyu.com/2013/374.html

原分类:网站建设, Linux


不知各位朋友曾经有没有遇到这个问题:使用SSH连接到服务器,当在编译程序(如LNMP一键安装包)的时候,网络异常或其它因素导致突然断开连接,远程命令也会停止,只能重新连接后再运行。本文就是教大家如何使用screen命令,避免出现以上问题。

Screen是一个可以在多个进程之间多路复用一个物理终端的全屏窗口管理器。

用户可以在一个screen会话中创建多个screen子会话,在每一个screen会话(或子会话)中就像操作一个真实的telnet/SSH连接窗口。

  • 安装screen

    • CentOS:yum install screen
    • Ubuntu:sudo apt-get install screen

    先在SSH中执行screen命令,如果提示screen:command not found,则在ssh执行以上命令。如果不会,请先输入exit退出。

  • 创建screen会话
    情景:需要在linux中下载并安装LNMP一键安装包,则先执行以下命令
    screen -S kwxgd
    以上命令的意思是:新建SSH会话,名字为kwxgd。
    回车以后,系统会自动跳转到名叫kwxgd的screen会话,就可以在这里执行LNMP一键安装包的命令了。
  • 暂时离开screen会话(但保留screen里运行的LNMP一键安装包命令)
    在SSH窗口中按快捷键:Ctrl+a d(按住Ctrl,依次按a,再按d)即可退出名叫kwxgd的screen的会话。
    暂时离开screen会话时,screen的会话并不会因为离开而停止,正在运行中(如编译LNMP一键安装包)的进程依然会继续运行,screen的好处就是可以在同一个ssh窗口中执行多个任务,如再新开一个Screen会话安装NET-SNMP。当然你也可以临时关闭ssh窗口,做些其它事情。
  • 重新读取screen会话
    重新读取screen会话有两种方法

    • (1)通过screen名字(如之前新建的kwxgd)读取。

    screen -r kwxgd
    在SSH中执行以上命令即可读取,若忘记之前创建的screen会话的名字,可以通过一下方法查询正在运行中的screen会话。

    • (2)通过screen会话ID读取screen会话

    screen -ls
    SSH中执行以上命令,即可读取正在运行中的screen会话,同时会列出ID号。
    若名字太长或过于复杂,可以通过ID号形式打开screen会话
    screen -r 3528
    如读取kwxgd,ID号为3528,在SSH执行一下命令即可。

  • 关闭screen会话
    若不再需要当前的screen会话,可以在当前的screen会话中执行 exit,提示[screen is terminating]表示已经成功关闭screen会话(不会保留在内存中),如果需要,请按第一步重建。
  • screen的快捷键
    正如之前讲到的Ctrl + a d 可以暂时离开当前的screen会话,同时screen还提供其它的快捷键。
    Ctrl + a c :在当前screen会话中创建一个子会话
    Ctrl + a w :子会话列表
    Ctrl + a p :上一个子会话
    Ctrl + a n :下一个子会话
    Ctrl + a 0-9 :在第0窗口至第9子会话间切换
文章目录