要终止卡死的SSH会话,先用w命令确认目标pts终端编号,再执行pkill -kill -t pts/X精准杀掉;若失败,则用ps或pstree定位对应shell进程PID,最后kill -9 PID。

当你在Mac上通过SSH连接多台远程服务器或同一台服务器的多个会话时,可能需要强制终止某个已卡死、无响应或被他人占用的终端会话,避免资源占用或安全风险。
确认目标终端会话ID
登录目标服务器后,执行 w 命令,列出所有当前活跃的登录用户及对应终端设备(如 pts/2、pts/4)。
注意观察 USER 列是否为你不期望的用户,Tty 列显示的 pts/* 编号即为该会话的终端标识符——这是后续杀进程的关键依据。
若输出中未显示 pts 设备(例如只看到 console 或 ttys001),说明该会话不是标准 SSH 连接,不能用 pkill -t 杀掉,需改用其他方式定位进程。
用 pkill 按终端设备精准杀死会话
执行命令:pkill -kill -t pts/3(将 pts/3 替换为你从 w 命令中查到的目标终端编号)。
这条命令会向该终端上所有进程组发送 SIGKILL 信号,等效于直接拔掉这个虚拟终端的电源——shell、子命令、后台作业全部立即终止,不会等待清理。
如果提示 no process found,说明该 pts 已释放或会话已自然退出,无需再操作。
当 pkill 失效时:手动查杀会话主进程
方法一:根据登录用户查进程树
运行 ps -u username -o pid,tty,cmd(把 username 换成目标用户名),筛选出 Tty 列为对应 pts 的行,记下最上方的 PID(通常是 bash 或 zsh 进程)。
方法二:用 pstree 定位会话根进程
输入 pstree -s -U $USER,找到以 sshd → bash(或 zsh)为路径的分支,其最末端的 shell 进程 PID 即为会话控制点。
确认无误后,执行 kill -9 PID 终止该 shell 进程——它的所有子进程将随之消亡。

















