在要執行指令碼的目標主機上:
root@pts/0 # screen -list
There is a screen on:
16261.dat (Detached)
1 Socket in /var/run/screen/S-root.
恢複之前通過screen -S dat產生的終端:
root@pts/0 # screen -r dat
-------------------------------------
轉自http://www.iteye.com/topic/169987
大家在起後台服務,或者長時間執行某個指令碼的時候。
是不是感覺,互動性很差,
有時,想把結果直接在終端上輸出,又怕不小心關閉了終端導致進程退出? (有些sshd服務還會設定連線逾時,自動結束終端)
現在用 screen 這個指令可以很好的解決跑後台服務的尷尬。
命令其實超簡單的:
直接在終端上輸入 screen , 這個時候,伺服器端會啟一個新的終端,但這個終端,與之前的普通終端不一樣,它不隸屬於 sshd 進程組,這樣,當本地終端關閉後,伺服器終端不會被 kill。
當然,優點還不止這麼些,在伺服器終端裡執行任務時,你甚至可以隨時地切換到本地終端做些其他事情,然後,要回去時,再恢複到剛才已經開啟的伺服器終端裡,如果剛才的任務沒有結束,還可以繼續執行任務。
操作步驟:
首先,進入 screen -S sessionname終端。(sessionname是為了分辨你的session)
然後按 ctrl + a ,再按 d 鍵暫時退出終端。
當要返回時, 先查看剛才的終端進程ID, screen -list
或直接
screen -r xx (剛才的sessionname)就可以了
當然,當你開了很多個session後,打算關閉幾個session,可以進入到session後,exit 一下就可以了.
總的來說, screen是可以完全替代 nohup 的,並且本身提供了較複雜的功能,但是我認為,剛才那些簡單的功能足以應付日常運作。
如果對該指令感興趣的朋友,推薦一篇文章:
http://www.ibm.com/developerworks/cn/linux/l-cn-screen/