0

我正在尝试守护在 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已经在后台运行的“”。

我该如何进行?

4

1 回答 1

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 -你的守护进程/

于 2014-10-06T11:27:55.927 回答