入門:
什么是Screen:
Screen是一個(gè)可以在多進(jìn)程之間復(fù)用的一個(gè)物理終端窗口管理器五督。相當(dāng)于用戶可以連接多個(gè)SSH藏否。作者主要將jobs托管在Screen上,以防止中途logout對(duì)整個(gè)工作造成影響(主要用于轉(zhuǎn)錄組拼裝過程中Trinity的托管充包,當(dāng)然你也可以用到其他需要長(zhǎng)時(shí)間運(yùn)行的程序)秕岛。
導(dǎo)致logout后程序關(guān)閉的原因:
首先要了解幾個(gè)概念:
- 進(jìn)程組 process group:一個(gè)或多個(gè)進(jìn)程的集合,每一個(gè)進(jìn)程組有唯一一個(gè)進(jìn)程組ID,即進(jìn)程組長(zhǎng)進(jìn)程的ID误证。
- 會(huì)話期 session:一個(gè)或多個(gè)進(jìn)程組的集合继薛,有唯一一個(gè)會(huì)話期首進(jìn)程(session leaer)。會(huì)話期ID為首進(jìn)程的ID愈捅。
- 會(huì)話期可以有一個(gè)單獨(dú)的控制終端(controlling terminal)遏考。與控制終端連接的會(huì)話期首進(jìn)程叫做控制進(jìn)程(controlling process)。當(dāng)前與終端交互的進(jìn)程成為前臺(tái)進(jìn)程組蓝谨,其余成為后臺(tái)進(jìn)程組灌具。
然后就是靈魂原理了:
如何使用青团?
例1:如何將trinity托管給Screen:
-
終端中執(zhí)行screen命令,這樣screen將制造一個(gè)全新的ssh窗口咖楣。這與之前的ssh窗口一致督笆,你可以在里面輕松執(zhí)行任何shell程式或者執(zhí)行任何程序。若使用exit或logout命令诱贿,則會(huì)退出當(dāng)前窗口娃肿。
#screen
執(zhí)行你要托管的程序,例如trinity珠十。(當(dāng)然我們還可以在已經(jīng)運(yùn)行中的Screen中創(chuàng)建新的窗口料扰,需要使用快捷鍵Ctrl-a c,即是先摁下ctrl鍵+a鍵焙蹭,然后在摁c鍵晒杈。)
在某screen中使用快捷鍵Ctrl-a d,將screen中的會(huì)話detach掉孔厉,這樣會(huì)回到上一個(gè)screen界面(如果有)拯钻。然后就可以斷開你的ssh,去干自己喜歡做的事情撰豺,當(dāng)然trinity進(jìn)程也不會(huì)被關(guān)閉粪般,還在后臺(tái)運(yùn)行。
-
返回已經(jīng)detach的會(huì)話:
##顯示當(dāng)前所有會(huì)話 #screen -ls There is a screen on: 8909.pts -1 -noed02 (Detached) ##顯示當(dāng)前會(huì)話 1 Socket in /somepath
返回到指定的detach會(huì)話:
#screen -r 8909
這樣就可以將一段已經(jīng)detach的會(huì)話復(fù)原郑趁。
當(dāng)然刊驴,你也可以關(guān)閉當(dāng)前screen(針對(duì)trinity這種有防止關(guān)閉設(shè)置的軟件最好不過了)
#screen -X -S 8909 quit ##其中8909為screen ID
主要是剛剛學(xué)習(xí)trinity姿搜,對(duì)于參數(shù)設(shè)置不太了解寡润,想修改參數(shù)又沒法停止的情況。這個(gè)以后會(huì)跟大家詳細(xì)談?wù)劇?/p>
例2:還沒想好舅柜!
附錄:
Ctrl+a作為screen窗口管理器識(shí)別命令的命令字符(command character)梭纹,是一種常見的鍵綁定(key binding)形式。因?yàn)橹路荩谝粋€(gè)screen中當(dāng)前鍵盤發(fā)出的信息都直接發(fā)送到了當(dāng)前screen变抽,所以需要這種鍵綁定形式作為命令字符。
常見的鍵綁定有:
鍵綁定 | 作用 |
---|---|
Ctrl-a d | 暫時(shí)斷開screen窗口 |
Ctrl-a ? | 顯示幫助 |
Ctrl-a w | 顯示所有窗口列表 |
Ctrl-a Ctrl-a | 切換至之前顯示的窗口 |
Ctrl-a c | 創(chuàng)建一個(gè)新的screen然后切換到該screen |
Ctrl-a n | 切換到下一個(gè)screen |
Ctrl-a p | 切換到上一個(gè)screen |
Ctrl-a k | 結(jié)束掉當(dāng)前screen |
當(dāng)然你可以使用Ctrl-a ?展示screen的所有幫助氮块,但是我整理了幾個(gè)常用的命令:
命令參數(shù) | 作用 |
---|---|
#screen -ls | 顯示當(dāng)前系統(tǒng)中screen會(huì)話 |
#screen -r [NAME] | 連接到名稱叫做[NAME]的screen會(huì)話 |
#screen -wipe | 同ls但會(huì)刪掉那些無(wú)法連接的會(huì)話 |
#screen -S [NAME] | 創(chuàng)建名稱為[NAME]的screen會(huì)話 |
參考資料:
- linux 技巧:使用 screen 管理你的遠(yuǎn)程會(huì)話 https://www.ibm.com/developerworks/cn/linux/l-cn-screen/
- GNU Screen的官方網(wǎng)站 http://www.gnu.org/software/screen/