Несколько раз ставил 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» и редактируем только первую строчку.