1. 問題描述
我們都知道,作為站羣服務器,預設一般都是被動的等待客户端的連線到來。但對基於 ssh 協議的 xshell 的運用,總是出現自動斷開的情況。
但是我們經常需要執行一些需要很長時間才能完成的任務,比如系統備份、 ftp 傳輸等等。通常情況下我們都是為每一個這樣的任務開一個遠端終端視窗,因為它們執行的時間太長了。必須等待它們執行完畢,在此期間不能關掉視窗或者斷開連線,否則這個任務就會被殺掉,一切半途而廢了。
2. 解決辦法
可以將該會話 “儲存”,只要遠端站羣服務器不關閉,該會話就一直進行,下次需要的時候 重新連線即可。那麼如何儲存當前會話呢?
答案就是神器:screen
2.1. screen 站羣解決方案
先看其簡介:
Screen 是一款由 GNU 計劃開發的用於命令列終端切換的自由站羣軟件。使用者可以通過該站羣軟件同時連線多個本地或遠端的命令列會話,並在其間自由切換。
由簡介我們知道,screen 可以在不同回話之間切換,那麼,我們利用它的這個效能,把需要的會話 “儲存”,等到第二天用的使用再 “切換” 回 當時的會話即可。
怎麼操作呢?我們先看一個簡單粗暴地例子:我需要執行一個跑一夜的程式,那麼在巡行程式之前先進行一步操作:
1. screen -S myOneNight
這句話的意思是,建立了一個叫 myOneNight 的 screen 作業會話。
2. 現在,再執行你的 執行一夜的程式碼。。。。
3. 關機,或者去玩其他事情。
4. 第二天,再開啓 shell 執行命令:screen -r myOneNight 我們發現,昨天的程式還在正常執行。爽。
3. screen 詳解
3.1 安裝 screen
其實流行的 Linux 發行版(例如 Red Hat Enterprise Linux)通常會自帶 screen 實用程式,如果沒有的話,可以從 GNU screen 的官方網站下載。
[root@TS-DEV ~]# yum install screen
[root@TS-DEV ~]# rpm -qa|grep screen
screen-4.0.3-4.el5
[root@TS-DEV ~]#
1
2
3
4
3.2 建立一個新的視窗
安裝完成後,直接敲命令 screen 就可以啓動它。但是這樣啓動的 screen 會話沒有名字,實踐上推薦為每個 screen 會話取一個名字,方便分辨:screen -S david
3.3 常用的命令
screen -S yourname -> 新建一個叫 yourname 的 session
screen -ls -> 列出當前所有的 session
screen -r yourname -> 回到 yourname 這個 session
screen -d yourname -> 遠端 detach 某個 session
screen -d -r yourname -> 結束當前 session 並回到 yourname 這個 session