Ruby Process.daemon: включение / выключение

Я пытаюсь демонизировать скрипт Ruby, работающий на 2.1.1.

Моя демоническая часть кода выглядит так:

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", уже работает в фоновом режиме.

Как мне поступить?

1 ответ

Решение

Как правило, 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/

Другие вопросы по тегам