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