linux中Screen的用法

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

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

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

    我們利用screen命令可以很好的解決這個問題。實現在斷開SSH的情況下,在服務器上繼續執行程序。

    那什麼是screen命令?

    Screen被稱之爲一個全屏窗口管理器,用他可以輕鬆在一個物理終端上獲得多個虛擬終端的效果

    Screen功能說明:

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

    Screen命令語法:

    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命令挺不錯,在服務器上做點什麼費時的工作就不用愁了!

    Cannot open your terminal '/dev/pts/0' - please check.

    在server上使用screen的時候出現瞭如下錯誤:

    Cannot open your terminal '/dev/pts/0' - please check.

    可以使用script命令來記錄這個終端會話,執行

    script /dev/null

    然後就可以打開screen了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章