Implemented proper kill for autoserv: on receival of a SIGTERM it will kill its children.
Tested by running tests, aborting jobs and observing via ps -ef that everything gets cleaned up.
Signed-off-by: Svitlana Tumanova <stumanova@google.com>
git-svn-id: http://test.kernel.org/svn/autotest/trunk@1300 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/server/autoserv b/server/autoserv
index 1ede1d4..4bdb065 100755
--- a/server/autoserv
+++ b/server/autoserv
@@ -13,7 +13,19 @@
from common.check_version import check_python_version
check_python_version()
-import sys, os, re, server_job, hosts.site_host, utils, traceback
+import sys, os, re, server_job, hosts.site_host, utils, traceback, signal
+
+# Create separate process group
+os.setpgrp()
+
+# Implement SIGTERM handler
+def handle_sigint(signum, frame):
+ signal.signal(signal.SIGTERM, signal.SIG_DFL)
+ os.killpg(os.getpgrp(), signal.SIGTERM)
+
+# Set signal handler
+signal.signal(signal.SIGTERM, handle_sigint)
+
usage = """\
usage: autoserv