Class: SrvManager::Monitor
- Inherits:
-
Object
- Object
- SrvManager::Monitor
- Defined in:
- lib/srv_manager/monitor.rb
Instance Attribute Summary collapse
-
#pid ⇒ Object
readonly
Returns the value of attribute pid.
Instance Method Summary collapse
Instance Attribute Details
#pid ⇒ Object (readonly)
Returns the value of attribute pid.
4 5 6 |
# File 'lib/srv_manager/monitor.rb', line 4 def pid @pid end |
Instance Method Details
#alive? ⇒ Boolean
26 27 28 29 30 |
# 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) ⇒ Object
32 33 34 35 36 37 38 39 40 41 |
# 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) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# 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 ⇒ Object
21 22 23 24 |
# File 'lib/srv_manager/monitor.rb', line 21 def stop ::Process.kill 9, pid if pid rescue Errno::ESRCH end |