2014-10-06 6 views
0

2.1.1에서 실행되는 Ruby 스크립트를 대몬 화하려고합니다. 코드의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) 것을 I가 원하는 것을 죽이고되지 않는 것 같습니다. 백그라운드에서 이미 실행중인 이전의 "ruby tweetsearcher.rb -start"을 죽이고 싶습니다.

어떻게 진행합니까?

답변

2

일반적으로 PID는 읽히는 파일에 저장되어 중지됩니다.

Process.kill(9,Process.pid)을 호출하면 중지하려는 프로세스가 아닌 "스토퍼"프로세스 자체가 종료됩니다.

여기에 루비에 쓰는 데몬에 대한 안내입니다 : http://codeincomplete.com/posts/2014/9/15/ruby_daemons/

당신이 볼 수 있듯이, 그것은 사소한 과정이 아니다. https://www.mikeperham.com/2014/09/22/dont-daemonize-your-daemons/

+0

정말 어려운 과정입니다 : 여기

는 당신이 그 문제를 돌봐 프로세스 모니터링 시스템에 의존하는 대신 모든 디먼 화하려고 노력하지만 안 제안 다른 블로그입니다. 운 좋게도, 나는 TweetStream gem을 사용하고 있었고 내장 된 데몬 툴을 가지고있었습니다. –