我正在尝试守护一个运行在2.1.1上的Ruby脚本。
我的守护程序部分代码如下:
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
"。
如何继续?
通常,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/