diff --git a/bin/singlestart.sh b/bin/singlestart.sh
index abce630101d08d355ad08ad9a6848d0160fd0abd..aa7da1c932b63df4d67c36c56e7d40034d5b0782 100755
--- a/bin/singlestart.sh
+++ b/bin/singlestart.sh
@@ -13,6 +13,7 @@ trap "exit 1" ERR
 trap "reaper" SIGINT SIGCHLD
 unset LOGDIR LOGPIPE PIDIDX
 declare -A PIDIDX
+trap "killallprocs" SIGTERM
 
 function reaper()
 {
@@ -40,6 +41,15 @@ function reaper()
     max=30
 }
 
+function killallprocs()
+{
+    if [ ${#PIDIDX[*]} -gt 0 ]
+    then
+        echo "*** Killing all remaining processes: ${PIDIDX[*]} (${!PIDIDX[*]})."
+        kill -KILL ${!PIDIDX[*]} 2>/dev/null || true
+    fi
+}
+
 # You can start as:
 # BFAHOME=/home/bfa/bfa singlestart.sh
 # singlestart.sh /home/bfa/bfa
@@ -111,8 +121,4 @@ do
     sleep 1
     max=$(( $max - 1 ))
 done
-if [ ${#PIDIDX[*]} -gt 0 ]
-then
-    echo "*** Killing all remaining processes: ${PIDIDX[*]} (${!PIDIDX[*]})."
-    kill -KILL ${!PIDIDX[*]} 2>/dev/null || true
-fi
+killallprocs