从另一个 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