2014-10-06 102 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