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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM