summaryrefslogtreecommitdiff
path: root/allstar/allstar-restart
diff options
context:
space:
mode:
Diffstat (limited to 'allstar/allstar-restart')
-rwxr-xr-xallstar/allstar-restart30
1 files changed, 30 insertions, 0 deletions
diff --git a/allstar/allstar-restart b/allstar/allstar-restart
new file mode 100755
index 0000000..7432e43
--- /dev/null
+++ b/allstar/allstar-restart
@@ -0,0 +1,30 @@
+#!/usr/bin/perl
+
+use strict;
+
+use File::Temp qw/tempfile/;
+use Sys::Hostname;
+
+my $host = hostname;
+
+# The init script for asterisk is really weak. Find
+# all of the pids that are child pids of the
+# safe_asterisk process which is launched as a nohup
+# process rooted in /bin/sh. The astdn.sh script
+# just does not work right at all to kill stuck children
+my $sapid = qx(/usr/bin/pgrep safe_asterisk);
+
+# be maximally safe and don't do anything if there is
+# no safe_asterisk process
+if( length($sapid) > 0 ){
+ my $apids = qx(/usr/bin/pstree -p $sapid);
+ $apids =~ s/[^\d]/ /g;
+ $apids =~ s/\s+/ /g;
+ system("/usr/bin/kill -9 $apids > /dev/null 2>&1");
+ sleep 1;
+ unlink "/var/run/asterisk.ctl";
+ unlink "/var/run/asterisk.pid";
+ system("/usr/local/sbin/astup.sh > /dev/null 2>&1");
+}
+
+exit 0;