module Terminate

Constants

VERSION

Public Class Methods

execute(pid, timeout = 10, signal = 'TERM') click to toggle source
# File lib/terminate.rb, line 23
def self.execute(pid, timeout = 10, signal = 'TERM')
  if pid_exist?(pid)
    Process.kill(signal, pid)
    info "Send SIGNAL #{signal} to process #{pid}."
    begin
      Timeout.timeout(timeout) do
        while pid_exist?(pid)
          sleep 0.1
        end
        info "Process #{pid} is done."
      end
    rescue Timeout::Error
      Process.kill('KILL', pid)
      info "Timeout, send SIGNAL KILL to process #{pid}."
    end
  else  
    info "Process #{pid} is not found."
  end
end
info(*args) click to toggle source
# File lib/terminate.rb, line 43
def self.info(*args)
  logger.info(*args) unless logger.nil?
end
logger() click to toggle source
# File lib/terminate.rb, line 10
def self.logger
  @@logger
end
logger=(logger) click to toggle source
# File lib/terminate.rb, line 6
def self.logger=(logger)
  @@logger = logger
end
pid_exist?(pid) click to toggle source
# File lib/terminate.rb, line 14
def self.pid_exist?(pid)
  begin
    Process.getpgid( pid )
    true
  rescue Errno::ESRCH
    false
  end
end