def send_signal(signal, pid_file, timeout=60)
if File.file?(pid_file) && pid = File.read(pid_file)
pid = pid.to_i
Logging.log "Sending #{signal} signal to process #{pid} ... "
Process.kill(signal, pid)
Timeout.timeout(timeout) do
sleep 0.1 while Process.running?(pid)
end
Logging.log ""
else
puts "Can't stop process, no PID found in #{pid_file}"
end
rescue Timeout::Error
Logging.log "Timeout!"
force_kill pid_file
rescue Interrupt
force_kill pid_file
rescue Errno::ESRCH
Logging.log "process not found!"
force_kill pid_file
end