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