如何终止我自己的空闲 ssh 会话

如何终止我自己的空闲 ssh 会话

我想杀死一些空闲的 ssh 会话。该远程服务器被许多用户使用,我如何识别我拥有的会话的pid?

当我运行时who,我会得到一个由用户名标记的 ssh 会话列表。

$ who
                                                                                       
me      pts/0        2020-11-23 18:05 (tmux(id).%0)
me      pts/1        2020-11-06 13:28 (<ip 1>)
someone    pts/2        2020-11-09 09:36 (<ip 2>)
someone    pts/3        2020-11-26 20:26 (<ip 2>)
...

当我运行时pstree,会话不再按用户名标记。

$ pstree -p | grep sshd 

|-sshd(930)-+-sshd(3518)---sshd(3536)---python(5736)-+-{python}(5744)
           |           |-sshd(4285)---sshd(4308)
           |           |-sshd(5428)---sshd(5450)
...

答案1

除非您是 root 用户,否则您将无法对其其他任何进程执行任何操作,因此仅向所有sshd进程发出信号没有危险:

pkill sshd

如果您想明确地将其限制为您自己的进程:

pkill -U "$USER" sshd

或者,如果USER您正在运行的 shell 中未使用该变量,请尝试"$LOGNAME"代替"$USER", 或

pkill -U "$(id -un)" sshd

另请参阅该命令的手册pkill

如果您想获取匹配进程的进程 ID 列表,请使用pgrep代替。pkill使用pkillpgrepwith-o仅表示或列出最老的过程。

答案2

如果是root,请不要pkill sshd在远程服务器上运行,否则您将无法重新连接:ssh: connect to host yourdomain.com port 22: Connection refused。反而:

  1. 跑步w。在最后一列(标记为WHAT)中找到您的空闲命令。然后查看第二列(标记为TTY)以查找您的空闲会话,例如:pts/0

  2. 跑步ps aux | grep pts/0。在最后一列中找到您的空闲命令 - 它的 PID 将在第二列中,例如:12345。还要查找-bash并记下其 PID,例如:12346

  3. kill 12345; kill 12346使用上面的 PID运行。

  4. 重新运行wpts/0不应再显示。

相关内容