一.screen是什麼 linux
Screen是Linux下的一款遠程會話管理工具,能夠在多個進程之間多路複用一個物理終端的全屏窗口管理器。它能夠建立多個會話 (Session),每一個會話中能夠建立多個窗口(Window),每一個窗口中能夠運行單獨的任務,而且互相之間不受影響,還能夠方便快速的在不一樣的窗口 和會話之間切換。 bash
二.screen有什麼用 工具
在VPS中執行一些很是耗時的任務時(以下載,壓縮,解壓縮,編譯,安裝等),咱們一般是單獨開一個遠程終端窗口來執行這個任務,且在任務執行過程 中不能關閉這個窗口或者中斷鏈接,不然正在執行的任務會被終止掉。而有了screen,咱們能夠在一個窗口中安裝程序,而後在另外一個窗口中下載文件,再在 第三個窗口中編譯程序,只須要一個SSH鏈接就能夠同時執行這三個任務,還能夠方便的在不一樣會話或窗口中切換,即便由於意外致使窗口關閉或者鏈接中斷,也 不會影響這三個任務的執行。 .net
三.screen的使用說明 命令行
1.安裝Screen htm
大多數狀況下,系統已經安裝好了screen。若是沒有,能夠用下面的命令來安裝: 進程
CentOS系統中執行:yum install screen
Debian/Ubuntu系統執行:apt-get install screen 文檔
2.經常使用命令 get
screen的說明至關複雜,反正我是看得頭暈了。但事實上,咱們只須要掌握下面五個命令就足夠咱們使用了: 域名
screen -S test #建立一個名爲test的會話
screen -ls #列出全部會話
screen -d test #卸載名爲test的會話,但會話中的任務會繼續執行。
screen -r test #恢復名爲test的會話
exit #退出當前窗口
3.經常使用快捷鍵
Ctrl+a c :在當前screen會話中建立窗口
Ctrl+a d : 效果與screen -d相同,卸載當前會話
Ctrl+a w :顯示當前會話中的窗口列表,顯示在標題欄中
Ctrl+a n :切換到下一個窗口
Ctrl+a p :切換到上一個窗口
Ctrl+a 0-9 :在第0個窗口和第9個窗口之間切換
說明:這裏的快捷鍵由三個鍵組成,如Ctrl+a c,你能夠按住Ctrl鍵,再依次按下a和c。也能夠先按一次Ctrl+a,再按一次Ctrl+c。兩種方法都是可行的。
4.使用實例
看着上面羅列的命令和快捷鍵是否是以爲頭暈,不要緊,咱們仍是用一個實例最能說明問題,假設咱們要同時執行下面三個個任務:給系統升級,下載一個文件,ping谷歌的域名。
a.先執行screen -S update建立一個名爲update的會話。該會話會自動建立一個窗口,在這個窗口中執行系統升級命令yum update -y。如圖一所示,注意Putty窗口標題欄中的[screen 0: bash]表明這是第一個窗口(從0開始計數),執行的是bash。
圖一:執行yum -update -y
b.按快捷鍵Ctrl+a c,在當前會話中建立一個新的窗口,而後咱們執行wget http://cachefly.cachefly.net/100mb.test,如圖二所示,此時Putty窗口的標題欄中顯示的是[screen 1: bash],表明這是第二個窗口,執行的也是bash。快捷鍵Ctrl+a w會在標題欄顯示該會話中有哪些窗口。快捷鍵Crrl+a n或者Ctrl a+p能夠在不一樣窗口之間切換。
圖二:執行wget
c.一個會話中能夠建立N個窗口,如今假設咱們想另外建立一個會話來執行第三個任務。按快捷鍵Ctrl+a d(也能夠執行screen -d update)卸載當前加載的update會話(但該會話中執行的兩個任務任然正常運行,至關於被轉成了後臺進程),而後執行screen,建立一個新的 會話(由於此時咱們沒有使用-S參數指定新建立會話的名字,則screen會按照它的命名規則來命名新的會話,能夠參見下面screen -ls命令的執行結果)。如今咱們執行ping -c 5 www.linuxidc.com。
d.執行screen -ls能夠查看當前全部的會話,如圖三所示,能夠看到目前有兩個會話22080.update和22102.pts-0.hawstname604,其中 22080和22102分別是這兩個會話的PID,當咱們調用screen -r,screen -d等命令時,能夠用這個PID代替會話的名字,如screen -d update與screen -d 22080是等效的。會話後面的(Attached)表明該會話已經被加載,(Detached)表示該會話已被卸載。
圖三:第一次執行screen -ls
e.執行exit退出當前窗口。當一個會話中的全部窗口都被結束,則該會話會被自動終止,命令行會提示[screen is terminating]。此時再執行screen -ls,會顯示只有一個22080.update會話,且處於(Detached)狀態,如圖四所示。
圖四:第二次執行screen -ls
f.執行screen -r update從新加載update會話。能夠繼續查看前兩個任務的執行狀況,咱們甚至能夠中斷當前SSH鏈接,從新鏈接以後依然能夠看到這兩個任執行。
就寫到這兒了吧,更多關於screen的用法能夠參見man screen。說實話,screen是一款功能很是強大的工具,但與此同時,它的幫助文檔也寫的很是複雜,反正我是看得頭暈了,因此纔有了這麼一篇文章,但願對你們可以有所幫助。
相關閱讀:
Linux下Screen的經常使用命令 http://www.linuxidc.com/Linux/2012-07/65358.htm
Zabbix經過郵件發送Screen圖形報表實現 http://www.linuxidc.com/Linux/2013-06/85759.htm
Linux虛擬終端命令Screen用法詳解 http://www.linuxidc.com/Linux/2013-07/87415.htm
Linux 技巧:使用 Screen 管理你的遠程會話 http://www.linuxidc.com/Linux/2013-10/91612.htm