#!/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;