2012-08-06 36 views
0

如果您使用net/ssh gem在远程服务器启动命令,并且该命令处于死锁状态,如何找到在远程服务器上运行的进程的pid并杀死它?使用gem net-ssh启动kill pid

net/ssh gem支持这个吗?

+0

你需要一种方法杀死使用Net :: SSH gem的处理? – Kashyap 2012-08-06 18:29:54

+0

是的,这会很方便。我发现ruby PTY为您提供了您开始的进程的pid,如果它没有响应,您可以使用它来终止进程。但PTY使用起来比较复杂,所以我想找到一种方法来与网络做同样的事情:SSH gem – cjapes 2012-08-07 09:00:35

回答

-1

好吧,如果你能ssh到远程服务器,你可以用它来得到进程的PID:

# Assuming the command you want to kill is a ruby program. 
# If the program is something else, say sparrow mail app, you should replace 
# ruby with sparrow below. 
    ps -ax | grep ruby 

然后,也许是:

kill -9 <pid> 
+0

如果你对远程机器执行ssh然后运行一个不是ruby的命令,那么这将不会返回任何结果...... :( – cjapes 2012-08-07 09:01:43

+0

我认为答案有点令人困惑,答案中的'grep '部分基本上用''来过滤命令'ps -ax'的输出,所以如果它不是一个Ruby程序,你会替换它不管你运行的程序名是什么 – Kashyap 2012-08-07 09:23:27

+0

然而,如果你想使用Net :: SSH gem,我在这里写了一小段代码:https://gist.github.com/3277327。 – Kashyap 2012-08-07 09:26:05