2014-10-06 62 views
0

我正在嘗試在2.1.1上運行的Ruby腳本進行守護程序。Ruby Process.daemon:打開/關閉

我的代碼的一部分守護程序是這樣的:

case ARGV[0] 
when "-start" 
    puts "TweetSearcher started." 
    Process.daemon 
when "-stop" 
    Process.kill(9,Process.pid) 
else 
    puts "Lacks arguments. Use -start/-stop" 
    abort 
end 

但是,它看起來像該Process.kill(9,Process.pid)不殺我想要的。我想殺死之前已經在後臺運行的「ruby tweetsearcher.rb -start」。

我該如何繼續?

回答

2

通常,PID存儲在一個文件中,然後讀取它來停止它。

調用Process.kill(9,Process.pid)殺死「塞子」過程本身,而不是它試圖阻止的過程。

以下指南編寫守護進程在Ruby中:http://codeincomplete.com/posts/2014/9/15/ruby_daemons/

正如你所看到的,它不是一個簡單的過程。

這裏是另一個博客,暗示你不應該試圖在所有的守護進程,而是依靠一個過程監控系統上採取的這些問題護理:https://www.mikeperham.com/2014/09/22/dont-daemonize-your-daemons/

+0

這的確是一個艱難的過程。幸運的是,我使用的是TweetStream gem,它有一個內置的守護進程工具。 – 2014-10-08 14:05:27