class SrvManager::Monitor

Attributes

pid[R]

Public Instance Methods

alive?() click to toggle source
# File lib/srv_manager/monitor.rb, line 26
def alive?
  pid && ::Process.kill(0, pid) ? true : false
rescue Errno::ESRCH
  false
end
keep_alive(service) click to toggle source
# File lib/srv_manager/monitor.rb, line 32
def keep_alive(service)
  service.processes.each do |process|
    LOGGER.info "Monitoring service: #{service.name} (#{process.id || 'stoped'})"
    if !process.started? && service.auto
      process.start
    elsif process.started? && !process.alive? 
      process.restart 
    end
  end
end
start(sleep_time=60) click to toggle source
# File lib/srv_manager/monitor.rb, line 6
def start(sleep_time=60)
  @pid = ::Process.fork do
    sleep 1
    loop do
      Context.scoped do |ctx|
        ctx.services.each do |service|
          keep_alive service
        end
      end
      sleep sleep_time
    end
  end
  ::Process.detach @pid
end
stop() click to toggle source
# File lib/srv_manager/monitor.rb, line 21
def stop
  ::Process.kill 9, pid if pid
rescue Errno::ESRCH
end