aboutsummaryrefslogtreecommitdiffstats
path: root/safe_asterisk
diff options
context:
space:
mode:
Diffstat (limited to 'safe_asterisk')
-rwxr-xr-xsafe_asterisk47
1 files changed, 47 insertions, 0 deletions
diff --git a/safe_asterisk b/safe_asterisk
new file mode 100755
index 000000000..584e854d2
--- /dev/null
+++ b/safe_asterisk
@@ -0,0 +1,47 @@
+#!/bin/sh
+TTY=9 # TTY (if you want one) for Asterisk to run on
+CONSOLE=yes # Whether or not you want a console
+NOTIFY= # Who to notify about crashes
+#
+# Don't fork when running "safely"
+#
+ASTARGS="-f"
+if [ "$TTY" != "" ]; then
+ ASTARGS="${ASTARGS} -vvv"
+ if [ "$CONSOLE" != "no" ]; then
+ ASTARGS="${ASTARGS} -c"
+ fi
+fi
+
+#
+# Let Asterisk dump core
+#
+ulimit -c unlimited
+
+while :; do
+
+ if [ "$TTY" != "" ]; then
+ stty sane < /dev/tty${TTY}
+ asterisk ${ASTARGS} >& /dev/tty${TTY} < /dev/tty${TTY}
+ else
+ asterisk ${ASTARGS}
+ fi
+ EXITSTATUS=$?
+ #echo "Asterisk ended with exit status $EXITSTATUS"
+ if [ "$EXITSTATUS" = "0" ]; then
+ # Properly shutdown....
+ echo "Asterisk shutdown normally."
+ exit 0
+ elif [ $EXITSTATUS -gt 128 ]; then
+ let EXITSIGNAL=EXITSTATUS-128
+ echo "Asterisk exited on signal $EXITSIGNAL."
+ if [ "$NOTIFY" != "" ]; then
+ echo "Asterisk exited on signal $EXITSIGNAL. Might want to take a peek." | \
+ mail -s "Asterisk Died" $NOTIFY
+ fi
+ else
+ echo "Asterisk died with code $EXITSTATUS. Aborting."
+ exit 0
+ fi
+ echo "Automatically restarting Asterisk."
+done