FreeSwitch INIT script that works

Having installed Freeswitch a number of times, I’ve come across numerous scripts to make it easy to start and stop the Freeswitch daemon. There is one in the FS source but it’s very basic.
I’ll recommend that you test the code below on a demo server, before running on your production machine.

 

#! /bin/sh
#
# freeswitch: Starts the freeswitch Daemon
#
# chkconfig: 345 96 02
# processname: freeswitch
# description: Freeswitch fedora init script \
# config:
# Author: gled

# Source function library.
. /etc/init.d/functions
. /etc/sysconfig/network

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/freeswitch/bin
DESC="FreeSwitch Voice Switching System"
NAME=freeswitch
DAEMON=/usr/local/freeswitch/bin/$NAME
DAEMON_ARGS="-nc"
PIDFILE=/usr/local/freeswitch/log/$NAME.pid

## SECURITY NOTE: To run as non-root, create a new user for FreeSWITCH and set these variables (FS_GROUP is optional).
##
#FS_USER=freeswitch
#FS_GROUP=freeswitch

do_setlimits() {
ulimit -c unlimited
ulimit -d unlimited
ulimit -f unlimited
ulimit -i unlimited
ulimit -n 999999
ulimit -q unlimited
ulimit -u unlimited
ulimit -v unlimited
ulimit -x unlimited
ulimit -s 244
ulimit -l unlimited
return 0
}

base=${0##*/}

do_start() {
if [ -n "${FS_USER}" ]; then
DAEMON_ARGS="${DAEMON_ARGS} -u ${FS_USER}"
fi

if [ -n "${FS_GROUP}" ]; then
DAEMON_ARGS="${DAEMON_ARGS} -g ${FS_GROUP}"
fi

do_setlimits
$DAEMON $DAEMON_ARGS
RETVAL=$?
if [ $RETVAL = 0 ]; then
success $"$base startup"
else
failure $"$base startup"
fi
echo
return $RETVAL
}

do_stop() {
$DAEMON -stop
RETVAL=$?
[ $RETVAL = 0 ] && success $"$base shutdown" || failure $"$base shutdown"
rm -f $LOCKFILE
echo
return $RETVAL
}

# See how we were called.
case "$1" in
start)
do_start
;;
stop)
do_stop
;;
restart)
do_stop
echo "Waiting for daemon to exit..."
sleep 5
do_start
;;
*)
echo $"Usage: $0 {start|stop}"
exit 2
;;
esac

exit $RETVAL

Enjoy!