Linux screen命令——多重視窗管理程序

screen命令

系統管理員經常需要SSH 或者telent 遠程登錄到Linux 服務器,經常運行一些需要很長時間才能完成的任務,比如系統備份、ftp 傳輸等等。
通常情況下我們都是爲每一個這樣的任務開一個遠程終端窗口,因爲它們執行的時間太長了。必須等待它們執行完畢,在此期間不能關掉窗口或者斷開連接,否則這個任務就會被殺掉,一切半途而廢了。

1. 簡介

Linux screen命令用於多重視窗管理程序。

screen爲多重視窗管理程序。此處所謂的視窗,是指一個全屏幕的文字模式畫面。通常只有在使用telnet登入主機或是使用老式的終端機時,纔有可能用到screen程序。

GNU Screen:
在這裏插入圖片描述

Screen is a full-screen window manager that multiplexes a physical terminal between several processes, typically interactive shells. Each virtual terminal provides the functions of the DEC VT100 terminal and, in addition, several control functions from the ANSI X3.64 (ISO 6429) and ISO 2022 standards (e.g., insert/delete line and support for multiple character sets). There is a scrollback history buffer for each virtual terminal and a copy-and-paste mechanism that allows the user to move text regions between windows. When screen is called, it creates a single window with a shell in it (or the specified command) and then gets out of your way so that you can use the program as you normally would. Then, at any time, you can create new (full-screen) windows with other programs in them (including more shells), kill the current window, view a list of the active windows, turn output logging on and off, copy text between windows, view the scrollback history, switch between windows, etc. All windows run their programs completely independent of each other. Programs continue to run when their window is currently not visible and even when the whole screen session is detached from the users terminal.

Screen是一個全屏窗口管理器,它在多個進程(通常是交互式shell)之間多路傳輸物理終端。每個虛擬終端提供DEC VT100終端的功能,此外,還提供來自ANSI X3.64(ISO 6429)和ISO 2022標準的若干控制功能(例如,插入/刪除行和支持多個字符集)。每個虛擬終端都有一個滾動歷史緩衝區和一個複製粘貼機制,允許用戶在窗口之間移動文本區域。當調用screen時,它會創建一個包含shell(或指定命令)的窗口,然後避開您的方式,以便您可以像平常一樣使用該程序。然後,您可以隨時創建新的(全屏)窗口,其中包含其他程序(包括更多shell),關閉當前窗口,查看活動窗口列表,打開和關閉輸出日誌記錄,在窗口之間複製文本,查看滾動歷史記錄,在窗口之間切換,所有窗口都完全獨立地運行它們的程序。當程序的窗口當前不可見時,甚至當整個屏幕會話與用戶終端分離時,程序仍繼續運行。

2. 安裝screen程序

可以使用yum來安裝:

yum install screen

3. 語法

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

參數說明:
-A:將所有的視窗都調整爲目前終端機的大小。
-d<作業名稱> :將指定的screen作業離線。
-h<行數>:指定視窗的緩衝區行數。
-m即使目前已在作業中的screen作業,仍強制建立新的screen作業。
-r<作業名稱>:恢復離線的screen作業。
-R:先試圖恢復離線的作業。若找不到離線的作業,即建立新的screen作業。
-s<shell>:指定建立新視窗時,所要執行的shell。
-S<作業名稱>:指定screen作業的名稱。
-v:顯示版本信息。
-x:恢復之前離線的screen作業。
-ls或--list:顯示目前所有的screen作業。
-wipe:檢查目前所有的screen作業,並刪除已經無法使用的screen作業。

4. 常用screen參數

screen -S yourname -> 新建一個叫yourname的session
screen -ls -> 列出當前所有的session
screen -r yourname -> 回到yourname這個session
screen -d yourname -> 遠程detach某個session
screen -d -r yourname -> 結束當前session並回到yourname這個session

在每個screen session 下,所有命令都以 ctrl+a(C-a) 開始。

  • C-a ? -> 顯示所有鍵綁定信息
  • C-a c -> 創建一個新的運行shell的窗口並切換到該窗口
  • C-a n -> Next,切換到下一個 window
  • C-a p -> Previous,切換到前一個 window
  • C-a 0..9 -> 切換到第 0…9 個 window
  • Ctrl+a [Space] -> 由視窗0循序切換到視窗9
  • C-a C-a -> 在兩個最近使用的 window 間切換
  • C-a x -> 鎖住當前的 window,需用用戶密碼解鎖
  • C-a d -> detach,暫時離開當前session,將目前的 screen session (可能含有多個 windows) 丟到後臺執行,並會回到還沒進 screen 時的狀態,此時在 screen session 裏,每個 window 內運行的 process (無論是前臺/後臺)都在繼續執行,即使 logout 也不影響。
  • C-a z -> 把當前session放到後臺執行,用 shell 的 fg 命令則可回去。
  • C-a w -> 顯示所有窗口列表
  • C-a t -> Time,顯示當前時間,和系統的 load
  • C-a k -> kill window,強行關閉當前的 window
  • C-a [ -> 進入 copy mode,在 copy mode 下可以回滾、搜索、複製就像用使用 vi 一樣
    C-b Backward,PageUp
    C-f Forward,PageDown
    H(大寫) High,將光標移至左上角
    L Low,將光標移至左下角
    0 移到行首
    $ 行末
    w forward one word,以字爲單位往前移
    b backward one word,以字爲單位往後移
    Space 第一次按爲標記區起點,第二次按爲終點
    Esc 結束 copy mode
  • C-a ] -> Paste,把剛剛在 copy mode 選定的內容貼上

在這裏插入圖片描述
在這裏插入圖片描述

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