linux命令 screen 終端分屏命令

2022-03-10 04:08:11 字數 4162 閱讀 4222

與 tmux 工具較為類似,sreen 命令同樣提供在唯一個的命令列終端上進行多視窗切換和管理的基本功能( 關於 tmux 基本操作可參見筆者的博文 終端復用工具 tmux 基本操作教程 )。

screen 命令以會話( session )為基礎為使用者提供終端復用功能,會話可以被認為是後台執行的程式,其中可以進行命令執行、新視窗建立等操作,不同的會話可以包含有不同的執行內容。當終端繫結到特定會話上時,則該終端會顯示該會話的資訊,包括會話中包含的視窗、執行的命令、輸出等。當終端從當前會話解除繫結時,當前終端不再顯示會話的內容,但會話仍然獨立的執行在後台,只有當會話中不再有正在執行的程式時(包括視窗執行的 shell 程式),該會話自動被結束。

screen 安裝

screen 的安裝方式與之前介紹的 tmux 大致相同,使用者可通過 apt 命令直接在個人計算裝置上進行安裝。與 tmux 不同的是,一般的 ubuntu 伺服器作業系統會自帶 screen 程式,故而使用者使用伺服器時,可直接通過 screen 命令進行終端復用和管理。

apt-get install screen        //

通過 apt 安裝 screen 命令

會話管理當使用者在某一終端執行 sreen 命令時,當前終端即進入某個 screen 建立的會話,新建的會話預設擁有乙個執行 shell 的視窗,使用者可在該視窗中進行所需操作,並通過 screen 命令進行會話中新視窗的建立、對某個視窗進行面板劃分等操作。使用者可通過 screen 命令脫離( detach )某個會話,則該會話會在後台執行而不再顯示到終端上,當前終端也可通過 screen 命令繫結( attach )到某個會話上,從而顯示目標會話中的視窗內容,以供使用者操作。當會話中所有的視窗均退出時,則 screen 會話自動結束

使用者可通過 screen -s 會話名 建立乙個新的會話。在終端中執行上述命令後,當前終端即繫結( attach )新建立的會話,新建會話預設建立乙個執行 shell 的視窗,使用者即可在其中進行操作。

screen -s session_name     //

建立名為 session_name 的會話,不指定 session_name 時則建立匿名會話

可通過 screen -d session_name 使得當前終端脫離( 不再顯示 )指定會話,被脫離的會話仍在後台執行,可通過 screen 命令重新繫結.

screen -d session_name        //

脫離( detach ) 指定的會話,不指定 session_name ,則脫離當前會話

可通過 screen -ls 命令顯示所有存在的會話。

screen -ls               //

顯示當前存在的所有會話

可通過 screen -r session 使得當前終端重新進入某個會話,使用者既可以使用每個會話擁有的獨立編號指定會話,也可以通過建立會話時的會話名來指定會話。

screen -r session          //

使得當前終端重新進入( attach )並顯示 session 指定的會話

使用者也可以直接通過 screen command 的方式建立乙個單視窗會話,command 直接指定新建會話中要執行的命令( 不再預設執行 shell ),命令執行完畢則會話自動退出。

screen python main.py        //

建立乙個執行 main.py 程式的會話,程式執行完成後會話直接退出

對於乙個 screen 會話而言,當其中執行的最後乙個程式退出時( 如唯一的視窗中的 shell 程式退出 ),會話即自動結束。當會話非自然的無法使用時,通過 screen -ls 檢視時,該會話後面會帶有"dead"字尾,使用者可通過 screen -wipe 直接上述刪除這些會話。

screen -wipe        //

刪除非正常( dead )狀態的會話

當前會話不要了,輸入exit命令,就相當於殺死了當前會話程序,不會進行session儲存;

為了建立乙個視窗,將乙個程式放到後端執行,然後退出視窗。我們通常需要將命令放到後台執行,為了以後臺程序的方式開啟乙個程式,只需要新增符號(&)到命令中,如下面所示:

./work &
例項:1.在伺服器登陸的 ssh 終端中新建立乙個名為 test 的會話,此時終端會繫結到新建立的終端中並顯示其視窗;

2.在該視窗中輸入 screen -d 則取消當前終端與會話的繫結,此時又回到之前的登入終端上,終端會顯示 detach 資訊;

3.通過 screen -ls 命令顯示所有存在的會話資訊,這裡可以看到筆者通過 screen 命令建立的會話的 id 和名字;

4.使用者可通過指定會話 id 或會話名的方式通過 screen -r 命令將當前終端重新繫結到指定會話中,終端會重新顯示繫結終端的視窗內容;

視窗管理

在繫結了 screen 會話的視窗中,可以進行 screen 視窗的管理。一般而言常用的視窗管理方式有兩種,一種直接通過命令列輸入 screen 命令,另一種則是通過 screen 會話所支援的 + 操作 的方式。在實際使用過程中,由於 screen 會話提供的視窗一般會用於執行使用者所需的命令,故而命令列輸入命令的方式並不總是可用的,筆者更常使用適用範圍更廣的 + 操作 的方式進行視窗管理。下列命令即記錄輸入 ( screen 的命令字首為 ctrl + a )後各個特定輸入與命令之間的對應關係,不再記錄命令字首。注意,下列視窗管理的功能也可通過命令列輸入命令的方式實現,具體可參見 screen 命令的 man 幫助文件。

視窗建立和切換

c      //建立乙個帶有 shell 的新視窗並切換至新視窗

k      //關閉當前視窗(以及其中執行的程式)

d      //退出當前會話

i      //顯示當前視窗的資訊

w      //顯示所有視窗的序號  

"      //顯示所有視窗,以供選擇切換

num             //num 為 0-9 之間的數字,切換至 num 對應的視窗

space / n         //切換到下一視窗( next )

backspace / p       //切換到上一視窗( previous )

上述操作中,注意通過 + d 的快捷操作直接退出退出當前會話,其效果與 screen -d 一致。

視窗劃分及其管理

乙個完整的終端視窗可以被進一步的劃分為若干個小部分,每個部分均可獨立執行程式。

s        //將當前終端水平劃分

|        //將當前終端垂直劃分

tab       //終端中劃分的不同區域進行順序切換

q        //刪除除當前所在區域外的所有的區域

x        //刪除當前區域

輔助功能

h          //開始/結束對當前視窗輸出的記錄,記錄儲存在名為 "screenlog.n" 的檔案中

c          //清空當前螢幕(終端)

l          //重新整理當前視窗

?          //顯示按鍵與功能的繫結

[ //進入複製模式,其大致操作與 vim 類似,詳見官方文件及文後參考資料

[ //將複製模式中複製的內容貼上

問題有時候會出現想要進入某個會話如 test,但是使用 screen -r test 時並沒有進入已存在的會話,而是新建了會話的情況。通過 screen -ls 命令檢視已經存在的會話,發現會話 test 處於 attached 狀態,而不是正常的 detached 狀態。這是因為存在 screen 不正常的脫離會話。解決方法是使用 -d 引數。

screen -d -r test    #進入 test 會話,若無法進入,會先退出前乙個遠端對話顯示(使得會話進入detached狀態)

Linux虛擬終端命令Screen用法詳解

在使用 ssh或者 telnet登入遠端主機後,執行一些耗時的命令,如果此時ssh或者telnet中斷,那麼遠端主機上正在執行的程式或者說命令也會被迫終止。比如你遠端登入之後需要執行乙個耗時的指令如 svn checkout,這時馬上又要下班了,你要關閉你的電腦走人了,怎麼辦?screen能夠很好地...

終端分屏工具screen

linux自帶vim有分屏功能,但是只能分屏顯示檔案,不能同時顯示多個終端,針對這一需要,推薦乙個終端分屏工具。使用screen分屏 只能上下分屏,不能左右分屏 1 安裝工具 在ubuntu系統中使用sudo apt get install screen 安裝screen工具 2 使用工具 1,輸入...

好用的終端工具 Screen

screen 是一款由 gnu 開發的命令列終端工具,它提供了從多個終端視窗連線到同乙個 shell 會話 會話共享 當網路中斷,或終端視窗意外關閉是,中 screen 中執行的程式任然可以執行 系統自帶的終端視窗,當視窗意外關閉時,在該終端視窗中執行的程式也會終止。安裝 screen 工具 it ...