linux中screen命令的用法

做爲linux服務器管理員,常常要使用ssh登錄到遠程linux機器上作一些耗時的操做。html

也許你遇到過使用telnet或SSH遠程登陸linux,運行一些程序。若是這些程序須要運行很長時間(幾個小時),而程序運行過程當中出現網絡故障,或者客戶機故障,這時候客戶機與遠程服務器的連接將終端,而且遠程服務器沒有正常結束的命令將被迫終止。linux

又好比你SSH到主機上後,開始批量的scp命令,若是這個ssh線程斷線了,scp進程就中斷了。在遠程服務器上正在運行某些耗時的做業,可是工做還沒作完快要下班了,退出的話就會中斷操做了,如何纔好呢?shell

咱們利用screen命令能夠很好的解決這個問題。實如今斷開SSH的狀況下,在服務器上繼續執行程序。服務器

那什麼是screen命令?網絡

Screen被稱之爲一個全屏窗口管理器,用他能夠輕鬆在一個物理終端上得到多個虛擬終端的效果。ssh

Screen功能說明.net

簡單來講,Screen是一個能夠在多個進程之間多路複用一個物理終端的窗口管理器,這意味着你可以使用一個單一的終端窗口運行多終端的應用。 Screen中有會話的概念,用戶能夠在一個screen會話中建立多個screen窗口,在每個screen窗口中就像操做一個真實的 telnet/SSH鏈接窗口那樣。線程

Screen命令語法htm

screen [-AmRvx -ls -wipe][-d <做業名稱>][-h <行數>][-r <做業名稱>][-s ][-S <做業名稱>]進程

Screen命令參數
-A -[r|R]          將全部的視窗都調整爲目前終端機的大小。
-c filename        用指定的filename文件替代screen的配置文件’.screenrc’.
-d [pid.tty.host]  斷開screen進程(使用該命令時,screen的狀態必定要是Attached,也就是說有用戶連在screen裏)。通常進程的名字是以pid.tty.host這種形式表示(用screen -list命令能夠看出狀態)。
-D [pid.tty.host]  與-d命令實現同樣的功能,區別就是若是執行成功,會踢掉原來在screen裏的用戶並讓他logout。
-h <行數>        指定視窗的緩衝區行數。

-ls或–list        顯示目前全部的screen做業。
-m                    即便目前已在做業中的screen做業,仍強制創建新的screen做業。
-p number or name  預先選擇一個窗口。
-r [pid.tty.host]  恢復離線的screen進程,若是有多個斷開的進程,須要指定[pid.tty.host]
-R                      先試圖恢復離線的做業。若找不到離線的做業,即創建新的screen做業。
-s shell             指定創建新視窗時,所要執行的shell。
-S <做業名稱>  指定screen做業的名稱。(用來替代[pid.tty.host]的命名方式,能夠簡化操做).
-v                     顯示版本信息。
-wipe                檢查目前全部的screen做業,並刪除已經沒法使用的screen做業。
-x                     恢復以前離線的screen做業。

Screen命令的常規用法:

screen -d -r:鏈接一個screen進程,若是該進程是attached,就先踢掉遠端用戶再鏈接。

screen -D -r:鏈接一個screen進程,若是該進程是attached,就先踢掉遠端用戶並讓他logout再鏈接

screen -ls或者-list:顯示存在的screen進程,經常使用命令

screen -m:若是在一個Screen進程裏,用快捷鍵crtl+a c或者直接打screen能夠建立一個新窗口,screen -m能夠新建一個screen進程。

screen -dm:新建一個screen,並默認是detached模式,也就是建好以後不會連上去。

screen -p number or name:預先選擇一個窗口。

Screen實現後臺運行程序的簡單步驟:

1> 要進行某項操做時,先使用命令建立一個Screen:
[linux@user~]$ screen -S test1

2>接着就能夠在裏面進行操做了,若是你的任務還沒完成就要走開的話,使用命令保留Screen:
[linux@user~]$ Ctrl+a+d                    #按Ctrl+a,而後再按d便可保留Screen
[detached]                                 #這時會顯示出這個提示,說明已經保留好Screen了

若是你工做完成的話,就直接輸入:
[linux@user~]$ exit                        #這樣就表示成功退出了
[screen is terminating]

3> 若是你上一次保留了Screen,可使用命令查看:
[linux@user~]$ screen -ls
There is a screen on:
9649.test1   (Detached)

恢復Screen,使用命令:
[linux@user~]$ screen -r test1 (or 9649)

Screen命令中用到的快捷鍵

Ctrl+a c :建立窗口

Ctrl+a w :窗口列表

Ctrl+a n :下一個窗口

Ctrl+a p :上一個窗口

Ctrl+a 0-9 :在第0個窗口和第9個窗口之間切換

Ctrl+a K(大寫) :關閉當前窗口,而且切換到下一個窗口(當退出最後一個窗口時,該終端自動終止,而且退回到原始shell狀態)

exit :關閉當前窗口,而且切換到下一個窗口(當退出最後一個窗口時,該終端自動終止,而且退回到原始shell狀態)

Ctrl+a d :退出當前終端,返回加載screen前的shell命令狀態

Linux的screen命令挺不錯,在服務器上作點什麼費時的工做就不用愁了!

相關文章
相關標籤/搜索