因為做二代測序分析的原因,經常需要運行很長時間的程序。由於時間很長,一直都沒什麼太好的辦法。當有了screen,這一切便都迎刃而解了。敲入命令screen會創建一個跑著shell的單一窗口,在這裡面,你可以跑你所需要的程序。
使用screen非常簡易.只需在SHELL鍵入screen,便可打開一個screen session。
而在每個screen session下,所有命令都以ctrl+a(C-a)開始。現在讓我來簡單介紹基本的命令C-ac->Create,開啟新的window
C-an->Next,切換到下個window
C-ap->Previous,前一個window
more..
less..C-aC-a->Other,在兩個window間切換
C-aw->Windows,列出已開啟的windows有那些
C-a0->切換到第0個window
C-a1..9->切換到第1..9個windowC-aa->發出C-a,在emacs,ve,bash,tcsh下可移到行首C-at->Time,顯示當前時間,和系統的load
C-aK(大寫)->killwindow,強行關閉當前的windowC-a[->進入copy mode,在copy mode下可以回滾、搜索、
復制就像用使用vi一樣C-bBackward,PageUp
C-fForward,PageDown
H(大寫)High,將光標移至左上角
LLow,將光標移至左下角
0移到行首
$行末
在普通模式下:
用screen-ls可以看所有的screen sessions
用screen-rsessionid可以進sessionid指定的特定的screensession
最後exit退出即可。
--------------------------------
另外大家在起後台服務,或者長時間執行某個腳本的時候。是不是感覺,交互性很差,
有時,想把結果直接在終端上輸出,又怕不小心關閉了終端導致進程退出?(有些sshd服務還會設置連接超時,自動退出終端)
現在用screen這個指令可以很好的解決跑後台服務的尴尬。
命令其實超簡單的:
直接在終端上輸入screen,這個時候,服務器端會啟一個新的終端,但這個終端,與之前的普通終端不一樣,它不隸屬於sshd進程組,這樣,當本地終端關閉後,服務器終端不會被kill。
當然,優點還不止這麼些,在服務器終端裡執行任務時,你甚至可以隨時地切換到本地終端做些其他事情,然後,要回去時,再恢復到剛才已經打開的服務器終端裡,如果剛才的任務沒有結束,還可以繼續執行任務。
操作步驟:
首先,進入screen-Ssessionname終端。(sessionname是為了分辨你的session)
然後按ctrl+a,再按d鍵暫時退出終端。
當要返回時,先查看剛才的終端進程ID,screen-list
或直接
screen-rxx(剛才的sessionname)就可以了
當然,當你開了很多個session後,打算關閉幾個session,可以進入到session後,exit一下就可以了.
總的來說,screen是可以完全替代nohup的,並且本身提供了較復雜的功能,但是我認為,剛才那些簡單的功能足以應付日常運作。
總結:
希望本文介紹的linux系統中強大的screen命令能夠對讀者有所幫助,更多有關linux系統的知識還有待於讀者去探索和學習。