Несколько раз ставил Asterisk из сорцов на Убунте и только что заметил, что процесс Астериск стартует без процесса “safe_asterisk”. По-началу зашел в ступор, ведь процесс “safe_asterisk” позволяет перезапустить Asterisk, если в друг он упадет.  Несмотря на то, что для запуска Астериска использовались скрипт запуска, который шел в комплекте установки спецом под Debian – “safe_asterisk” не появлялся в процессах

На просторах Интернета нашел скрипт для Debian/Ubuntu, позволяющий запускать Астериск через – safe_asterisk. Немного подправил под Asterisk 1.8  и можно пользоваться. Для начала забекапим старый скрипт, все делаем под sudo.

mv /etc/init.d/asterisk /etc/init.d/asterisk_bak
touch /etc/init.d/asterisk
chmod +x /etc/init.d/asterisk

Затем создадим  файл “/etc/init.d/asterisk”, следующего содержания

#! /bin/bash
# $Id: asterisk,v 1.2 2004/07/18 20:24:07 Gregory Boehnlein
#
# asterisk start the asterisk PBX
#
# Sun Jul 18 2004 Gregory Boehnlein
# - Updated Version to 1.2
# - Added test for safe_asterisk
# - Changed "stop gracefully" to "stop now"
# - Added support for -U and -G command line options
# - Modified "reload" to call asterisk -rx 'reload'
# - Modified sh to bash due to symlinks. (Samael)

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=asterisk
DESC="Asterisk PBX"
# Full path to asterisk binary
DAEMON=/usr/sbin/asterisk

# Full path to safe_asterisk script
SAFE_ASTERISK=/usr/sbin/safe_asterisk

# Leave this set unless you know what you are doing.
# Uncomment the following and set them to the user/groups that you
# want to run Asterisk as. NOTE: this requires substantial work to
# be sure that Asterisk's environment has permission to write the
# files required for its operation, including logs, its comm
# socket, the asterisk database, etc.
#AST_USER="asterisk"
#AST_GROUP="asterisk"

### BEGIN INIT INFO
# Provides:             asterisk
# Required-Start:    $network $syslog $named $local_fs $remote_fs
# Required-Stop:     $network $syslog $named $local_fs $remote_fs
# Should-Start:      dahdi misdn lcr wanrouter mysql postgresql
# Should-Stop:       dahdi misdn lcr wanrouter mysql postgresql
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Asterisk PBX
# Description:          the Asterisk Open Source PBX
### END INIT INFO

test -x $DAEMON || exit 0

set -e

case "$1" in
start)
echo -n "Starting $DESC: "
if [ -f $SAFE_ASTERISK ] ; then
DAEMON=$SAFE_ASTERISK
fi
if [ $AST_USER ] ; then
ASTARGS="-U $AST_USER"
fi
if [ $AST_GROUP ] ; then
ASTARGS="`echo $ASTARGS` -G $AST_GROUP"
fi
start-stop-daemon --start --exec $DAEMON -- $ASTARGS
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
$DAEMON -rx 'core stop now' > /dev/null 2> /dev/null && echo -n "$NAME"
echo "."
exit 0
;;
reload)
echo "Reloading $DESC configuration files."
$DAEMON -rx 'reload' > /dev/null 2> /dev/null
;;
restart|force-reload)
$DAEMON -rx 'core restart gracefully' > /dev/null 2> /dev/null && echo -n "$NAME"
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
exit 1
esac

exit 0

Еще один момент. Для Ubuntu рекомендуют запускать “safe_asterisk” через “/bin/bash”. Открываем файл “/usr/sbin/safe_asterisk” и редактируем только первую строчку.