2012-08-06 40 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