歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux Screen超簡明教程

Linux Screen超簡明教程

日期:2017/2/28 14:33:34   编辑:Linux教程

這是一篇關於Linux下的遠程會話管理工具screen的簡單使用說明,寫給像我一樣的新手,高手請直接略過。

screen 關於多窗口操作可以參見:《 Linux 技巧:使用 Screen 管理你的遠程會話 》

一.screen是什麼

Screen是Linux下的一款遠程會話管理工具,可以在多個進程之間多路復用一個物理終端的全屏窗口管理器。它可以創建多個會話(Session),每個會話中可以創建多個窗口(Window),每個窗口中可以運行單獨的任務,並且互相之間不受影響,還可以方便快速的在不同的窗口和會話之間切換。

二.screen有什麼用

在VPS中執行一些非常耗時的任務時(如下載,壓縮,解壓縮,編譯,安裝等),我們通常是單獨開一個遠程終端窗口來執行這個任務,且在任務執行過程中不能關閉這個窗口或者中斷連接,否則正在執行的任務會被終止掉。而有了screen,我們可以在一個窗口中安裝程序,然後在另一個窗口中下載文件,再在第三個窗口中編譯程序,只需要一個SSH連接就可以同時執行這三個任務,還可以方便的在不同會話或窗口中切換,即使因為意外導致窗口關閉或者連接中斷,也不會影響這三個任務的執行。

三.screen的使用說明

1.安裝Screen

大多數情況下,系統已經安裝好了screen。如果沒有,可以用下面的命令來安裝:

CentOS系統中執行:yum install screen
Debian/Ubuntu系統執行:apt-get install screen

2.常用命令

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是一款功能非常強大的工具,但與此同時,它的幫助文檔也寫的非常復雜,反正我是看得頭暈了,所以才有了這麼一篇文章,希望對大家能夠有所幫助。

Copyright © Linux教程網 All Rights Reserved