Commit 91dce34f by Calen Pennington

Be more graceful when terminating background processes

parent 352a4da5
...@@ -37,18 +37,28 @@ def background_process(*command) ...@@ -37,18 +37,28 @@ def background_process(*command)
pgid = Process.getpgid(pid) pgid = Process.getpgid(pid)
begin begin
Timeout.timeout(5) do Timeout.timeout(5) do
puts "Terminating process group #{pgid}" puts "Interrupting process group #{pgid}"
Process.kill(:SIGTERM, -pgid) Process.kill(:SIGINT, -pgid)
puts "Waiting on process group #{pgid}" puts "Waiting on process group #{pgid}"
Process.wait(-pgid) Process.wait(-pgid)
puts "Done waiting on process group #{pgid}" puts "Done waiting on process group #{pgid}"
end end
rescue Timeout::Error rescue Timeout::Error
puts "Killing process group #{pgid}" begin
Process.kill(:SIGKILL, -pgid) Timeout.timeout(5) do
puts "Waiting on process group #{pgid}" puts "Terminating process group #{pgid}"
Process.wait(-pgid) Process.kill(:SIGTERM, -pgid)
puts "Done waiting on process group #{pgid}" puts "Waiting on process group #{pgid}"
Process.wait(-pgid)
puts "Done waiting on process group #{pgid}"
end
rescue Timeout::Error
puts "Killing process group #{pgid}"
Process.kill(:SIGKILL, -pgid)
puts "Waiting on process group #{pgid}"
Process.wait(-pgid)
puts "Done waiting on process group #{pgid}"
end
end end
end end
end end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment