从另一个SSH会话中分离出屏幕

从另一个SSH会话中分离出屏幕

简介

在Linux系统中,有可能通过SSH(Secure SHell)打开多个终端会话。当在远程服务器上工作时,这可能是非常有用的,你想同时保持多个终端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屏幕会话

如果你已经分离了一个屏幕会话,并想在以后恢复它,你可以使用屏幕命令-r选项,如上一节所述。然而,如果有多个同名的分离的屏幕会话,你可能需要使用-d标志来指定你想附加到哪个会话。

例如,要附加进程ID为44345的屏幕会话,你可以使用以下命令

$ screen -r 44345

另外,你可以使用-d和-R标志来附加到最近分离的同名屏幕会话。如果你有多个分离的屏幕会话,而你不确定你想附加到哪一个,这可能很有用。

$ screen -d -R 44345

杀死一个SSH屏幕会话

如果你想完全杀死一个屏幕会话,你可以使用带-X选项的screen命令,后面加上-S标志和会话名称或进程ID。例如,要杀死进程ID为44345的屏幕会话,你可以使用以下命令

$ screen -x -S 44345 quit

结论

在这篇文章中,我们经历了在Linux中从另一个SSH会话中强行分离一个屏幕会话的步骤。我们还研究了如何附加和杀死屏幕会话。通过使用这些命令,你可以很容易地管理远程服务器上的屏幕会话,并确保它们不会被不必要地留下运行。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程