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/