screen 命令示例:管理多個終端會話

Sk發表於2019-06-11

GNU Screen 是一個終端多路複用器(視窗管理器)。顧名思義,Screen 可以在多個互動式 shell 之間複用物理終端,因此我們可以在每個終端會話中執行不同的任務。所有的 Screen 會話都完全獨立地執行程式。因此,即使會話意外關閉或斷開連線,在 Screen 會話內執行的程式或程式也將繼續執行。例如,當通過 SSH 升級 Ubuntu 伺服器時,screen 命令將繼續執行升級過程,以防萬一 SSH 會話因任何原因而終止。

GNU Screen 允許我們輕鬆建立多個 Screen 會話,在不同會話之間切換,在會話之間複製文字,隨時連上或脫離會話等等。它是每個 Linux 管理員應該在必要時學習和使用的重要命令列工具之一。在本簡要指南中,我們將看到 screen 命令的基本用法以及在 Linux 中的示例。

安裝 GNU Screen

GNU Screen 在大多數 Linux 作業系統的預設儲存庫中都可用。

要在 Arch Linux 上安裝 GNU Screen,請執行:

$ sudo pacman -S screen

在 Debian、Ubuntu、Linux Mint 上:

$ sudo apt-get install screen

在 Fedora 上:

$ sudo dnf install screen

在 RHEL、CentOS 上:

$ sudo yum install screen

在 SUSE/openSUSE 上:

$ sudo zypper install screen

讓我們繼續看一些 screen 命令示例。

管理多個終端會話的 Screen 命令示例

在 Screen 中所有命令的預設字首快捷方式是 Ctrl + a。使用 Screen 時,你需要經常使用此快捷方式。所以,要記住這個鍵盤快捷鍵。

建立新的 Screen 會話

讓我們建立一個新的 Screen 會話並連上它。為此,請在終端中鍵入以下命令:

screen

現在,在此會話中執行任何程式或程式,即使你與此會話斷開連線,正在執行的程式或程式也將繼續執行。

從 Screen 會話脫離

要從螢幕會話中脫離,請按 Ctrl + ad。你無需同時按下兩個組合鍵。首先按 Ctrl + a 然後按 d。從會話中脫離後,你將看到類似下面的輸出。

[detached from 29149.pts-0.sk]

這裡,29149 是 Screen ID,pts-0.sk 是螢幕會話的名稱。你可以使用 Screen ID 或相應的會話名稱來連上、脫離和終止螢幕會話。

建立命名會話

你還可以用你選擇的任何自定義名稱建立一個 Screen 會話,而不是預設使用者名稱,如下所示。

screen -S ostechnix

上面的命令將建立一個名為 xxxxx.ostechnix 的新 Screen 會話,並立即連上它。要從當前會話中脫離,請按 Ctrl + a,然後按 d

當你想要查詢哪些程式在哪些會話上執行時,命名會話會很有用。例如,當在會話中設定 LAMP 系統時,你可以簡單地將其命名為如下所示。

screen -S lampstack

建立脫離的會話

有時,你可能想要建立一個會話,但不希望自動連上該會話。在這種情況下,執行以下命令來建立名為senthil 的已脫離會話:

screen -S senthil -d -m

也可以縮短為:

screen -dmS senthil

上面的命令將建立一個名為 senthil 的會話,但不會連上它。

列出螢幕會話

要列出所有正在執行的會話(連上的或脫離的),請執行:

screen -ls

示例輸出:

There are screens on:
    29700.senthil   (Detached)
    29415.ostechnix (Detached)
    29149.pts-0.sk  (Detached)
3 Sockets in /run/screens/S-sk.

如你所見,我有三個正在執行的會話,並且所有會話都已脫離。

連上 Screen 會話

如果你想連上會話,例如 29415.ostechnix,只需執行:

screen -r 29415.ostechnix

或:

screen -r ostechnix

或使用 Screen ID:

screen -r 29415

要驗證我們是否連上到上述會話,只需列出開啟的會話並檢查。

screen -ls

示例輸出:

There are screens on:
        29700.senthil   (Detached)
        29415.ostechnix (Attached)
        29149.pts-0.sk  (Detached)
3 Sockets in /run/screens/S-sk.

如你所見,在上面的輸出中,我們目前已連上到 29415.ostechnix 會話。要退出當前會話,請按 ctrl + a d

建立巢狀會話

當我們執行 screen 命令時,它將為我們建立一個會話。但是,我們可以建立巢狀會話(會話內的會話)。

首先,建立一個新會話或連上已開啟的會話。然後我將建立一個名為 nested 的新會話。

screen -S nested

現在,在會話中按 Ctrl + ac 建立另一個會話。只需重複此操作即可建立任意數量的巢狀 Screen 會話。每個會話都將分配一個號碼。號碼將從 0 開始。

你可以按 Ctrl + n 移動到下一個會話,然後按 Ctrl + p 移動到上一個會話。

以下是管理巢狀會話的重要鍵盤快捷鍵列表。

  • Ctrl + a " - 列出所有會話
  • Ctrl + a 0 - 切換到會話號 0
  • Ctrl + a n - 切換到下一個會話
  • Ctrl + a p - 切換到上一個會話
  • Ctrl + a S - 將當前區域水平分割為兩個區域
  • Ctrl + a l - 將當前區域垂直分割為兩個區域
  • Ctrl + a Q - 關閉除當前會話之外的所有會話
  • Ctrl + a X - 關閉當前會話
  • Ctrl + a \ - 終止所有會話並終止 Screen
  • Ctrl + a ? - 顯示鍵繫結。要退出,請按回車    #### 鎖定會話

Screen 有一個鎖定會話的選項。為此,請按 Ctrl + ax。 輸入你的 Linux 密碼以鎖定。

Screen used by sk <sk> on ubuntuserver.
Password:

記錄會話

你可能希望記錄 Screen 會話中的所有內容。為此,只需按 Ctrl + aH 即可。

或者,你也可以使用 -L 引數啟動新會話來啟用日誌記錄。

screen -L

從現在開始,你在會話中做的所有活動都將記錄並儲存在 $HOME 目錄中名為 screenlog.x 的檔案中。這裡,x 是一個數字。

你可以使用 cat 命令或任何文字檢視器檢視日誌檔案的內容。

記錄 Screen 會話

終止 Screen 會話

如果不再需要會話,只需殺死它。要殺死名為 senthil 的脫離會話:

screen -r senthil -X quit

或:

screen -X -S senthil quit

或:

screen -X -S 29415 quit

如果沒有開啟的會話,你將看到以下輸出:

$ screen -ls
No Sockets found in /run/screens/S-sk.

更多細節請參照 man 手冊頁:

$ man screen

還有一個名為 Tmux 的類似的命令列實用程式,它與 GNU Screen 執行相同的工作。要了解更多資訊,請參閱以下指南。

資源


via: https://www.ostechnix.com/screen-command-examples-to-manage-multiple-terminal-sessions/

作者:sk 選題:lujun9972 譯者:wxy 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

screen 命令示例:管理多個終端會話

訂閱“Linux 中國”官方小程式來檢視

相關文章