diff --git a/zuul/cmd/executor.py b/zuul/cmd/executor.py
index ade9715..c82deb7 100755
--- a/zuul/cmd/executor.py
+++ b/zuul/cmd/executor.py
@@ -51,9 +51,10 @@
         if self.args.command:
             self.args.nodaemon = True
 
-    def exit_handler(self):
+    def exit_handler(self, signum, frame):
         self.executor.stop()
         self.executor.join()
+        sys.exit(0)
 
     def start_log_streamer(self):
         pipe_read, pipe_write = os.pipe()
@@ -132,13 +133,13 @@
         signal.signal(signal.SIGUSR2, zuul.cmd.stack_dump_handler)
 
         if self.args.nodaemon:
+            signal.signal(signal.SIGTERM, self.exit_handler)
             while True:
                 try:
                     signal.pause()
                 except KeyboardInterrupt:
                     print("Ctrl + C: asking executor to exit nicely...\n")
-                    self.exit_handler()
-                    sys.exit(0)
+                    self.exit_handler(signal.SIGINT, None)
         else:
             self.executor.join()
 
diff --git a/zuul/cmd/merger.py b/zuul/cmd/merger.py
index 7db1bee..2916a0b 100755
--- a/zuul/cmd/merger.py
+++ b/zuul/cmd/merger.py
@@ -42,9 +42,10 @@
         if self.args.command:
             self.args.nodaemon = True
 
-    def exit_handler(self):
+    def exit_handler(self, signum, frame):
         self.merger.stop()
         self.merger.join()
+        sys.exit(0)
 
     def run(self):
         # See comment at top of file about zuul imports
@@ -64,13 +65,13 @@
         signal.signal(signal.SIGUSR2, zuul.cmd.stack_dump_handler)
 
         if self.args.nodaemon:
+            signal.signal(signal.SIGTERM, self.exit_handler)
             while True:
                 try:
                     signal.pause()
                 except KeyboardInterrupt:
                     print("Ctrl + C: asking merger to exit nicely...\n")
-                    self.exit_handler()
-                    sys.exit(0)
+                    self.exit_handler(signal.SIGINT, None)
         else:
             self.merger.join()
 
diff --git a/zuul/cmd/scheduler.py b/zuul/cmd/scheduler.py
index 7722d6e..c3bfa5d 100755
--- a/zuul/cmd/scheduler.py
+++ b/zuul/cmd/scheduler.py
@@ -61,10 +61,11 @@
             self.log.exception("Reconfiguration failed:")
         signal.signal(signal.SIGHUP, self.reconfigure_handler)
 
-    def exit_handler(self):
+    def exit_handler(self, signum, frame):
         self.sched.exit()
         self.sched.join()
         self.stop_gear_server()
+        sys.exit(0)
 
     def term_handler(self, signum, frame):
         self.stop_gear_server()
@@ -180,13 +181,13 @@
         signal.signal(signal.SIGHUP, self.reconfigure_handler)
 
         if self.args.nodaemon:
+            signal.signal(signal.SIGTERM, self.exit_handler)
             while True:
                 try:
                     signal.pause()
                 except KeyboardInterrupt:
                     print("Ctrl + C: asking scheduler to exit nicely...\n")
-                    self.exit_handler()
-                    sys.exit(0)
+                    self.exit_handler(signal.SIGINT, None)
         else:
             self.sched.join()
 
