避免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

原文地址:https://www.cnblogs.com/hzhesi/p/3867351.html