杀死ssh会话和/或卡住进程


2

我正在用vi开发ssh。

我的问题是,有时我的ssh连接因为我的wifi连接不良而被杀死,之前的进程(如“top”,“rails c”等等)没有被正确杀死。

所以过了一会儿,我得到100%CPU使用率的这些进程(我真的不知道为什么),我需要手动杀死它们。

因为我不是唯一的开发人员,所以它可能变得非常混乱,所以我的老板让我想出一个解决方案。

我该怎么办?

Answers:


4

有几种方法:

  1. 杀死剩余的进程。
  2. 用一些东西来补偿断开。

第二种选择是最简单的选择 screen 要么 tmux

连接断开后重新连接,重新登录并恢复屏幕/ tmux会话,然后继续工作。 (用于屏幕使用 screen -r 恢复)。

如果您曾在Windows中使用过远程桌面,那么您可以将其与恢复断开连接的RDP会话进行比较。


我也用 screen 在这种情况下也是如此。好答案。 +1。
Michał Šrajer

你能告诉我如何杀死剩余的进程吗?
boby lapointe

首先获取剩余进程的进程ID。使用可以使用诸如的命令 ps 为了这。然后用 'kill -1 processID。这将为进程发送一个SIGHUP。松散翻译这将告诉进程“用户已断开连接。请以适当的方式结束自己。”大多数接收此信号的程序将保存文件,关闭数据库等。如果失败使用 kill -15 要么 kill -9 (-15终止于进程。像-1但更坚持。-15不会发送到进程而是发送给操作系统。这是'kill with prejeduce'命令,可能会造成混乱。
Hennes

谢谢,但我的意思是自动。
boby lapointe

您可能无法自动执行此操作。丢弃的[WiFi]连接应该已经导致另一方的shell,并在终止自身之前用SIGHUP发出所有进程的信号。
Hennes

1

如果你使用ssh与不可靠的连接,你可能想尝试一下: http://mosh.mit.edu/

莫什是为这个目的写的。请注意,您需要在两侧安装它。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.