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