Linux中國

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

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中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國