2014-10-06 2 views
0

Я пытаюсь демонтировать скрипт Ruby, работающий на 2.1.1.Ruby Process.daemon: включение/выключение

Мой демон часть кода, как это:

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

Как это сделать?

ответ

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-your-daemons/

+0

Это действительно сложный процесс. К счастью, я использовал драгоценный камень TweetStream, и у него был встроенный демон. –

Смежные вопросы