從另一個 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 中螢幕會話的步驟。我們還了解了如何附加和殺死螢幕會話。透過使用這些命令,您可以輕鬆管理遠端伺服器上的螢幕會話,並確保它們不會不必要地執行。

更新於:2023年1月4日

438 次瀏覽

啟動您的職業生涯

完成課程後獲得認證

開始
廣告
© . All rights reserved.