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

Screen Command Examples To Manage Multiple Terminal Sessions

GNU Screen 是一個終端多路複用器(窗口管理器)。顧名思義,Screen 能夠在多個交互式 shell 之間複用物理終端,所以咱們能夠在每一個終端會話中執行不一樣的任務。全部的 Screen 會話都徹底獨立地運行程序。所以,即便會話意外關閉或斷開鏈接,在 Screen 會話內運行的程序或進程也將繼續運行。例如,當經過 SSH 升級 Ubuntu 服務器時,screen 命令將繼續運行升級過程,以防萬一 SSH 會話因任何緣由而終止。linux

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

安裝 GNU Screen

GNU Screen 在大多數 Linux 操做系統的默認存儲庫中均可用。github

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

$ sudo pacman -S screen
複製代碼

在 Debian、Ubuntu、Linux Mint 上:ubuntu

$ sudo apt-get install screen
複製代碼

在 Fedora 上:bash

$ sudo dnf install screen
複製代碼

在 RHEL、CentOS 上:服務器

$ sudo yum install screen
複製代碼

在 SUSE/openSUSE 上:session

$ 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: www.ostechnix.com/screen-comm…

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

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

相關文章
相關標籤/搜索