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 に答える