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然後可以通過以下命令回到screen會話中:there is a screen on:
15057.noalgo (01/30/2015 06:16:45 am) (detached)
1 socket in /var/run/screen/s-noalgo.
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...