Linux下screen的使用

2021-06-28 13:18:43 字數 4310 閱讀 1557

linux下經常使用putty或者securecrt等通過ssh遠端登入伺服器,但如果在執行程式的過程中關閉遠端終端視窗,則原先執行的 程式會被立即殺死。這對於一些花費時間較長的程式非常不利,本文將介紹如何使用screen命令解決這個問題,以及screen提供的其他功能。

使用ssh遠端登入伺服器時,如果在執行程式的過程中不小心關閉了遠端終端視窗,或者出現網路斷開或者電腦宕機的情況,主機與伺服器的連線會話 立即丟失,剛剛執行的程式或進行的工作也同時丟失,這不得不說是一件非常令人沮喪的事情。使用screen可以很好地解決這個問題。

screen是一款由gnu計畫開發的用於命令列終端切換的自由軟體,實現全屏視窗管理的功能,能夠混合多個工作到乙個終端上。一般linux系統中自帶有screen命令,如果沒有,ubuntu類系統可以方便地通過以下命令進行安裝:

sudo apt-get install screen
在red hat類系統中可以使用以下命令:

yum install screen
下面簡單介紹screen的幾個常用功能。

通過putty等遠端伺服器後,直接在命令列下執行以下命令新建乙個screen會話:

screen
也可以指定會話的名稱,以下即建立以noalgo為名稱的會話:

screen -s noalgo
也可以在新建會話時指定要執行的程式,以下執行了vi編輯器,注意此時退出vi編輯器即表示退出了screen會話。

screen -s noalgo vi helloworld.c
新建會話後即進入了screen的世界,在這裡做的事情和在普通的shell中的事情沒有什麼區別,只是此時的會話是可以進行恢復的,即使發生 網路中斷,也可以通過再次執行screen命令回到剛才的會話中,而且,再次回來時螢幕上顯示的是剛才的畫面,而如果程式動態執行時,此時顯示最新的結 果。如果有事需要離開,而伺服器上的程式需要同時在執行,此時可以通過命令d分離會話。在screen會話中進行的操作都是以ctrl+a開始,所以分離 時需要先按下ctrl+a,然後再按d,這裡表示為:

c-a, d
此時會回到原先的putty視窗,就可以隨意關掉putty去幹其他事情了。當要回去的時候可以先通過putty進行登入,然後執行以下命令檢視系統中已有的screen會話:

screen -ls

screen -list
得到的結果類似為:

noalgo@admin:~$ screen -ls

there is a screen on:

15057.noalgo (01/30/2015 06:16:45 am) (detached)

1 socket in /var/run/screen/s-noalgo.

然後可以通過以下命令回到screen會話中:

screen -r 15075
或者直接通過會話名稱回去:

screen -r noalgo
此時即可繼續剛剛離開之前所做的事情了。另外,通過以下命令可以實現會話共享,此時多個使用者登入到同乙個會話中,如果他們同時處於同乙個視窗下時,彼此的操作會同步給每乙個使用者,即達到共享桌面的效果。

screen -x
在普通的shell環境中,如果要同時執行多個程式,可以通過ctrl+z,以及fg和bg等命令交替執行,但screen提供了多視窗的功能同樣可以達到這個目的。通過screen命令新建乙個會話:

screen -s noalgo
此時進入了screen會話預設的乙個視窗,通過以下命令可以新建乙個視窗並進入新的視窗:

c-a, c
c-a, n

c-a, p

使用以下命令可以檢視當前共有幾個視窗,標註*號的為當前所在的視窗:

c-a, w
使用以下命令強行關閉乙個視窗,如果當前只剩下最後乙個視窗,則終止當前的會話:

c-a, k
以下命令也可以達到同樣的效果:

exit
當使用多個視窗時,可以通過將螢幕分割成幾個區域來提高效率。使用以下命令進行分屏,分別是水平分割和垂直分割:

c-a, s

c-a, |

擁有多個螢幕時,使用以下命令進行切換:

c-a, tab
使用以下命令關閉某個分屏,

c-a, x
或者關閉處當前區域的所有其他區域:

c-a, q
以上是通過簡單的例子介紹screen的常見用法,下面對其引數進行詳細介紹。screen的命令語法為:

screen [-amrvx -ls -wipe][-d ][-h ][-r ]

其中的引數意義如下:

在每個screen會話中,可以使用的命令如下。注意,screen的命令都是以ctrl+a(c-a)開始的,以下省略c-a而直接以後面的按鍵替代:

其中在拷貝模式下可以使用的命令包括

這裡列的也不是全部的引數,需要更詳細的內容,可以直接通過以下命令進行獲取:

man screen
下面是c-a, ?顯示的內容,可以提示每個按鍵繫結的功能,也非常方便。

screen key bindings, page 1 of 1.

command key: ^a literal ^a: a

break ^b b history other ^a split s

clear c info i pow_break b suspend ^z z

colon : kill k k pow_detach d time ^t t

copy ^[ [ lastmsg ^m m prev ^h ^p p ^? title a

detach ^d d license , quit \ vbell ^g

digraph ^v lockscreen ^x x readbuf < version v

displays * log h redisplay ^l l width w

dumptermcap . login l remove x windows ^w w

fit f meta a removebuf = wrap ^r r

flow ^f f monitor m reset z writebuf >

focus ^i next ^@ ^n sp n screen ^c c xoff ^s s

hardcopy h number n select ' xon ^q q

help ? only q silence _

^] paste .

" windowlist -b

- select -

0 select 0

1 select 1

2 select 2

3 select 3

4 select 4

5 select 5

6 select 6

7 select 7

8 select 8

9 select 9

i login on

o login off

] paste .

| split -v

:kb: focus prev

Linux下screen的使用

linux下經常使用putty或者securecrt等通過ssh遠端登入伺服器,但如果在執行程式的過程中關閉遠端終端視窗,則原先執行的程式會被立即殺死。這對於一些花費時間較長的程式非常不利,本文將介紹如何使用screen命令解決這個問題,以及screen提供的其他功能。screen簡介 使用ssh遠...

Linux下使用screen工作How to

通過ssh在linux終端下工作,有乙個很煩的事情就是,如果需要執行乙個長時間的命令 例如拷貝乙個大檔案,或者做ddl 時,如果終端意外斷開 網路或者別的原因 一般命令就會終止,當然你可以使用nohup命令,這裡提供另乙個辦法 使用screen。一般,我們建立乙個screen會話,然後連線會話並在會...

Unbutu 下簡單使用 screen

一。安裝 apt install screen二。基礎命令 1.檢視當前伺服器上所有 screen 會話 screen ls2.建立 screen 自定義名字建立 screen s 名稱 直接 screen 建立 名稱為自動生成的一串字元 screen 自動生成的字串大概長這樣 3.進入指定 scr...