• 避免ssh断开导致运行命令的终止:screen


    事情是这样的,需要使用ssh登陆服务器,进行工程的编译,结果不知道什么原因ssh出现write failed:broken pipe,掉线了。反复实验了好几次还是这样(白花花的时间啊,又是configure又是make的),掉线的结果当然是需要重新登陆,然而正因为如此,之前编译的相当于中断了。有没有办法,让ssh掉线,但是之前的命令依然继续执行呢。

    经过同事的指点,找到相应的命令screen。

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

    换言之,我在ssh登陆到服务器时,在服务器上使用screen -S zrss,创建一个zrss名称的session,然后在这个session中进行工程的编译,这样即使断线,在服务器session中的命令还在运行。

    如果之前断线了,再次ssh登陆服务器后,使用screen -ls可以知道,有几个session,如果session状态为detached,使用命令screen -r zrss即可,或者是进程ID,即可回到之前窗口。

    zrss@pc:~$ ssh zhuang2@pek-lpgtest2.wrs.com
    zhuang2@pek-lpgtest2.wrs.com's password: 
    Last login: Fri Jul 25 09:02:35 2014 from pc.corp.ad.wrs.com
    [zhuang2@pek-lpgtest2 ~]$ screen -S zrss
    [zhuang2@pek-lpgtest2 ~]$ ls
    总用量 345688
    -rw-r--r-- 1 zhuang2 users   6610432 7月  25 09:07 intel-x86-64-bzImage-WR6.0.0.0_standard
    -rw-r--r-- 1 zhuang2 users 347014977 7月  25 09:08 intel-x86-64-glibc-std-standard-dist.tar.bz2
    [zhuang2@pek-lpgtest2 ~]$ Write failed: Broken pipe
    zrss@pc:~$ ssh zhuang2@pek-lpgtest2.wrs.com
    zhuang2@pek-lpgtest2.wrs.com's password: 
    Last login: Fri Jul 25 09:29:22 2014 from pc.corp.ad.wrs.com
    [zhuang2@pek-lpgtest2 ~]$ screen -ls
    There are screens on:
        26091.pts-47.pek-lpgtest2    (Detached)
        9250.zrss    (Detached)
    2 Sockets in /var/run/screen/S-zhuang2.
    
    [zhuang2@pek-lpgtest2 ~]$ screen -r zrss

    在screen中输入exit即可终止session

    [1]http://soft.chinabyte.com/os/277/12383277.shtml

    [2]http://www.vpser.net/manage/screen.html

  • 相关阅读:
    Quarts 执行定时任务失败(.job.entity.ScheduleJobEntity cannot be cast to com.)
    Map与String互相转化
    weui中的picker滑动报错
    weui中的picker使用js进行动态绑定数据
    ajax跨域问题解决方案(jsonp的使用)
    pdm文件打开方式
    删除静态页面的html
    js同时获取多个共同class内容标签内容集合
    内外网同时使用
    win10重装系统修改信息
  • 原文地址:https://www.cnblogs.com/hzhesi/p/3867351.html
Copyright © 2020-2023  润新知