事情是這樣的,需要使用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