2011-04-03 42 views
2

使用紅寶石SSH給exec一個外殼進程連續運行遠程機器上上紅寶石SSH EXEC持續時間或超時。我如何執行一個持續時間讓ssh進程運行,然後讓這個進程終止,並且ruby ssh調用結束,繼續執行後續代碼?如何執行遠程機器

目的:在遠程計算機上使用ruby ssh調用特定持續時間的測試。

例如:

Net::SSH.start(hostname.to_s, username.to_s, :password => pw.to_s) do|ssh| 
     output = ssh.exec("command line call that runs continuously") 
     end 

我能想到這樣做的唯一的事情: a)使用終結者周圍的紅寶石exec調用包的時間 B的持續時間)使用perl的輔助函數週圍的命令線路呼叫如圖所示here

肯定有比這更簡單的東西嗎?

回答

0

使用看門狗/終止器向過程發送信號是最常見的解決方案。請注意,遠程進程可能不得不單獨殺死!

這樣做的另一種方法是讓兩端每隔X秒觀察一個本地「信號量文件」......如果文件在那裏有正確的PID,就優雅地死去!

因此,一旦您的看門狗定時器到期,您可以通過scp或rsync將該文件同步到遠程機器,並在本地複製一個文件。這兩個工作都可以找到它們並終止它們自己..

當然你也可以發送一個UNIX信號,如SIGUSER