当前位置: 首页 > 科技观察

如何关闭不活动或空闲的SSH会话

时间:2023-03-14 20:14:02 科技观察

让我们假设当您通过ssh在服务器上工作时,您的会话连接将由于网络、电源或本地PC重启而断开。您可能会也可能不会再次登录服务器以继续工作,但您将始终保持未关闭的ssh会话。如何关闭不活动的ssh会话?首先使用w命令识别不活动或空闲的ssh会话,然后使用pstree命令获取空闲会话的PID,最后使用kill命令关闭会话。推荐阅读:Mosh(MobileShell)-最好的SSH远程连接替代方案如何识别非活动或空闲的SSH会话登录系统使用w命令查看当前有多少用户登录。记下要关闭的其他非活动或空闲ssh会话。在我当前的示例中,我可以看到有两个用户登录,其中一个是我当前正在执行w命令的ssh会话,另一个是之前的空闲会话。#w10:36:39up26days,20:29,2users,loadaverage:0.00,0.02,0.00USERTTYFROMLOGIN@IDLEJCPPUPCPUWHATrootpts/0219.91.219.1410:3428.00s0.00s0.00s-bashrootpts/2219.91.0Get100s.0sw4.0SSH会话的PID为了关闭空闲的ssh会话,我们需要空闲会话进程的父进程的PID。我们可以执行pstree命令查看包含所有进程的树状图,从而获得父进程的pid。您应该会得到类似于以下示例的输出。pstree命令的输出将远不止于此,为了更好地理解,我删除了许多不相关的内容。#pstree-pinit(1)-+-abrtd(2131)|-acpid(1958)|-httpd(32413)-+-httpd(32442)||-mingetty(2198)|-mysqld_safe(24298)---mysqld(24376)-+-{mysqld}(24378)||-php(32456)-+-php(32457)||-sshd(2023)-+-sshd(10132)---bash(10136)|`-sshd(10199)---bash(10208)---pstree(10226)|-udevd(774)-+-udevd(2191)`-udevd(27282)从上面的输出可以看到带Branched的sshd进程树状图。sshd的主进程是sshd(2023),另外两个分支是sshd(10132)和sshd(10199)。正如我在文章开头所说的,其中一个是我的新会话连接sshd(10199),它向我显示了正在执行的pstree命令,因此空闲会话是另一个进程,如sshd(10132)。推荐阅读:如何通过标准Web浏览器访问SecureShell(SSH)服务器推荐阅读:PSSH-跨多个Linux服务器并行执行命令如何关闭空闲SSH会话我们已经获得了有关空闲会话的所有信息。因此,让我们使用kill命令关闭空闲会话。确保将下面的PID替换为服务器上的空闲会话PID。#kill-910132(LCTT译注:这里是另一个工具pkill,使用pkill-tpts/0-kill关闭session,debian8下可用,有些版本好像需要改变-kill的位置)再次检查是否idlesessionisclosedClosed再次使用w命令查看idlesession是否已经关闭。没错,只有我自己的currentsession还在,所以idlesession已经关闭了。#w10:40:18up26days,20:33,1user,loadaverage:0.11,0.04,0.01USERTTYFROMLOGIN@IDLEJCPUPPCCPUWHATrootpts/2219.91.219.1410:360.00s0.00s0.00swRemoteServers推荐阅读:DSH-ExecuteCommandsonMultipleLinuxServersSimultaneouslyCheckagainwithpstreeCommandagainConfirmwithpstreecommand。是的,只有我自己的ssh会话还在。#pstree-pinit(1)-+-abrtd(2131)|-acpid(1958)||-httpd(32413)-+-httpd(32442)||-mingetty(2198)|-mysqld_safe(24298)---mysqld(24376)-+-{mysqld}(24378)||-php(32456)-+-php(32457)||-sshd(2023)---sshd(10199)---bash(10208)---pstree(10431)|-udevd(774)-+-udevd(2191)`-udevd(27282)