当机器卡住时杀死远程机器上的进程

当机器卡住时杀死远程机器上的进程

我通过 ssh 在远程服务器上启动了一个非常消耗资源的进程。这是一个在 MATLAB 中运行的优化问题。它需要完整的内存和CPU。事实上,我什至无法 ssh 到机器,它根本不回复。我如何杀死该进程?我没有 root 访问权限。

答案1

如果您的用户启动了该过程,而您只能远程访问,那么您的选择就受到限制。

我会尝试远程终止进程,这可能需要一些时间才能排队!

ssh -l $USER $HOSTNAME 'pkill -9 MATLAB'

如果执行,但不会终止正在运行的进程。您始终可以终止用户创建的所有进程。这将是最后的手段,如果您知道进程名称,显然可以避免这样做。

ssh -l $USER $HOSTNAME 'pkill -9 -u $USER'

如果您有任何 KVM 或 IPMI 访问权限,那么现在是时候将其释放了。

答案2

如果机器不响应任何网络请求,那么您就完蛋了。通过简单的排除过程,如果无法进行远程访问,则需要控制台访问。

要有耐心。如果机器交换频繁,可能需要几分钟的时间才能响应。

为了将来,请保持 ssh 会话打开,并准备好可能有问题的进程的进程 ID。所有主流 shell 都kill内置了该命令,因此即使机器负载严重或您的用户已达到其进程限制,您也可以终止进程。

另外,将来,您可以通过运行以下命令来限制 Matlab 进程可以分配的资源:ulimit在启动它的 shell 中执行命令。特别是,ulimit -Sv 42将任何一个进程可以分配的虚拟内存总量限制为 42kB(该限制适用于该 shell 随后启动的每个进程)。

相关内容