Sha256: e61eb4a9312e3f7affc49a8174e27df0aa5464a56dcc8e28cdbe66a804d11a4e
Contents?: true
Size: 1.1 KB
Versions: 1
Compression:
Stored size: 1.1 KB
Contents
module MultiDaemons class Pid KILL_TIMEOUT = 30 def self.running?(pid) return false unless pid begin Process.kill(0, pid) return true rescue Errno::ESRCH return false rescue Exception return true end end def self.force_kill(pids, timeout = KILL_TIMEOUT) Timeout.timeout(force_kill_timeout(timeout), Timeout::Error) do pids.each do |pid| sleep(0.5) while Pid.running?(pid) end end true rescue Timeout::Error Log.log 'Force stopping processes' pids.each do |pid| begin Process.kill('KILL', pid) rescue Errno::ESRCH end end begin Timeout.timeout(default_timeout, Timeout::Error) do pids.each do |pid| sleep 1 while Pid.running?(pid) end end rescue Timeout::Error Log.log 'Can not stop processes' return false end end def self.force_kill_timeout(timeout) timeout || KILL_TIMEOUT end def self.default_timeout KILL_TIMEOUT end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
multi_daemons-1.0.1 | lib/multi_daemons/pid.rb |