從另一個 SSH 會話中分離螢幕
引言
在 Linux 系統中,可以透過 SSH(安全外殼)開啟多個終端會話。當您在遠端伺服器上工作並希望同時開啟多個終端 shell 視窗時,這非常有用。但是,在某些情況下,您可能需要強制分離/刪除在另一個 SSH 會話中執行的螢幕會話。如果您意外地將螢幕會話留在遠端伺服器上然後關閉終端視窗,或者您想結束團隊中其他人留下的螢幕會話,則可能會發生這種情況。在本文中,我們將瞭解如何在 Linux 中強制從另一個 SSH 會話中分離螢幕會話。
分離/暫停 SSH 螢幕會話
要分離螢幕會話,您首先需要使用 SSH 連線到遠端伺服器。登入後,您可以透過使用帶有 **-ls** 標誌的 **screen** 命令列出可用的螢幕會話。此命令將向您顯示當前在伺服器上執行的所有螢幕會話的列表,以及它們的會話名稱和程序 ID。
例如,如果您在伺服器上運行了兩個螢幕會話,則 **screen -ls** 命令的輸出可能如下所示:
There are 2 screens on: 12345.pts-0.server (Detached) 12346.pts-0.server (Detached) 2 Sockets in /var/run/screen/S-user.
要分離螢幕會話,我們使用 **screen -d** 命令,後跟會話名稱或程序 ID。例如,要分離程序 ID 為 **44345** 的螢幕會話,我們使用以下命令:
$ screen -d 44345
如果螢幕會話當前已連線(或正在被另一個終端視窗使用),則需要使用 **“-D”** 標誌強制其分離。例如:
$ screen -D 12345
分離所有螢幕會話
如果您想一次分離所有螢幕會話,可以使用 **screen -X** 命令,後跟 **-S** 標誌和 **-Q** 標誌。例如:
screen -X -S . -Q quit
這將分離當前在伺服器上執行的所有螢幕會話。
在 bash 指令碼中使用 screen 命令
**screen** 命令在指令碼中可用於自動化遠端伺服器上的任務。例如,您可以使用指令碼啟動螢幕會話,在螢幕會話中執行命令,然後在命令完成後分離螢幕會話。
要在指令碼中使用 **screen** 命令,您可以將其作為命令列引數包含在內。例如,以下指令碼將啟動螢幕會話,執行 **ls** 命令,然後分離螢幕會話:
#!/bin/bash screen -S myScrnsession -d -m ls
要附加螢幕會話並檢視 **ls** 命令的輸出,您可以使用上一段中所示的 **screen -r** 命令。
$ screen -r myScrnsession
附加/恢復分離的 SSH 螢幕會話
如果您已分離螢幕會話並希望稍後恢復它,您可以使用上一節中描述的 **screen -r** 選項。但是,如果有多個具有相同名稱的分離螢幕會話,則可能需要使用 **-d** 標誌來指定要附加到的會話。
例如,要附加程序 ID 為 44345 的螢幕會話,可以使用以下命令:
$ screen -r 44345
或者,您可以使用 **-d** 和 **-R** 標誌附加到最近分離的具有相同名稱的螢幕會話。如果您有多個分離的螢幕會話並且不確定要附加到哪個會話,這將很有用。
$ screen -d -R 44345
殺死 SSH 螢幕會話
如果您想完全殺死螢幕會話,可以使用 **screen** 命令和 **-X** 選項,後跟 **-S** 標誌和會話名稱或程序 ID。例如,要殺死程序 ID 為 44345 的螢幕會話,可以使用以下命令:
$ screen -x -S 44345 quit
結論
在本文中,我們介紹了強制從另一個 SSH 會話中分離 Linux 中螢幕會話的步驟。我們還了解了如何附加和殺死螢幕會話。透過使用這些命令,您可以輕鬆管理遠端伺服器上的螢幕會話,並確保它們不會不必要地執行。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP