从另一个 SSH 会话中分离 Screen
简介
在 Linux 系统中,可以通过 SSH(安全外壳)打开多个终端会话。当您在远程服务器上工作并且想要同时打开多个终端 shell 窗口时,这非常有用。但是,在某些情况下,您可能需要强制分离/删除正在另一个 SSH 会话中运行的 Screen 会话。如果您不小心将某个 Screen 会话留在远程服务器上运行,然后关闭终端窗口,或者您想结束团队中其他人正在运行的 Screen 会话,就会发生这种情况。在本文中,我们将介绍如何在 Linux 中强制从另一个 SSH 会话中分离 Screen 会话。
分离/暂停 SSH Screen 会话
要分离 Screen 会话,您需要首先使用 SSH 连接到远程服务器。登录后,您可以通过执行带有 -ls 标志的 screen 命令来列出可用的 screen 会话。此命令将显示服务器上当前正在运行的所有 screen 会话的列表,以及它们的会话名称和进程 ID。
例如,如果您在服务器上运行了两个 screen 会话,则 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 会话,我们使用 screen -d 命令,后跟会话名称或进程 ID。例如,要分离进程 ID 为 44345 的 screen 会话,我们使用以下命令
$ screen -d 44345
如果 screen 会话当前已连接(或正在被其他终端窗口使用), 则需要使用 "-D" 标志强制分离。例如
$ screen -D 12345
分离所有 screen 会话
如果要一次性分离所有 screen 会话,可以使用 screen -X 命令,后接 -S 标志和 -Q 标志。例如
screen -X -S 。 -Q quit
这将断开服务器上当前正在运行的所有 screen 会话。
在 bash 脚本中使用 screen 命令
screen 命令在脚本中用于自动执行远程服务器上的任务。例如,您可以使用脚本启动一个 screen 会话,在 screen 会话中运行命令,然后在命令完成后断开 screen 会话。
要在脚本中使用 screen 命令,可以将其作为命令行参数添加。例如,以下脚本将启动一个 screen 会话,运行 ls 命令,然后断开该 screen 会话。
#!/bin/bash screen -S myScrnsession -d -m ls
要连接 screen 会话并查看 ls 命令的输出,您可以使用 screen -r 命令,如上一段所示。
$ screen -r myScrnsession
连接/恢复已断开的 SSH Screen 会话
如果您已断开 screen 会话并希望稍后恢复,可以使用 screen 命令的 -r 选项,如上一节所述。但是,如果有多个同名的已分离 Screen 会话,您可能需要使用 -d 标志来指定要附加到哪个会话。
例如,要附加 进程 ID 为 44345 的 Screen 会话,您可以使用以下命令
$ screen -r 44345
或者,您可以使用 -d 和 -R 标志附加到最近分离的同名 Screen 会话。如果您有多个已分离的 Screen 会话,并且不确定要附加到哪个会话,这将非常有用。
$ screen -d -R 44345
终止 SSH Screen 会话
如果要彻底终止 Screen 会话,可以使用 screen 命令,并加上 -X 选项,然后是 -S 标志以及会话名称或进程 ID。例如,要终止进程 ID 为 44345 的 Screen 会话,可以使用以下命令
$ screen -x -S 44345 quit
总结
在本文中,我们介绍了在 Linux 中强制将一个 Screen 会话与另一个 SSH 会话分离的步骤。我们还研究了如何附加和终止 Screen 会话。通过使用这些命令,您可以轻松地管理远程服务器上的屏幕会话,并确保它们不会不必要地运行。
相关文章
有用资源
linux 参考教程 - 该教程包含有关 linux 的更多信息:https://www.cainiaomax.com/linux/

