#!/bin/bash ### BEGIN INIT INFO # Provides: airtime-liquidsoap # Required-Start: $local_fs $remote_fs $network $syslog $all # Required-Stop: $local_fs $remote_fs $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Liquidsoap daemon ### END INIT INFO USERID=pypo GROUPID=pypo NAME="Liquidsoap Playout Engine" DAEMON=/usr/lib/airtime/pypo/bin/airtime-liquidsoap PIDFILE=/var/run/airtime-liquidsoap.pid EXEC='/usr/bin/airtime-liquidsoap' start () { mkdir -p /var/log/airtime/pypo-liquidsoap chown $USERID:$GROUPID /var/log/airtime/pypo-liquidsoap chown $USERID:$GROUPID /etc/airtime touch /etc/airtime/liquidsoap.cfg chown $USERID:$GROUPID /etc/airtime/liquidsoap.cfg touch $PIDFILE chown $USERID:$GROUPID $PIDFILE #start-stop-daemon --start --quiet --chuid $USERID:$GROUPID \ #--pidfile $PIDFILE --nicelevel -15 --startas $DAEMON start-stop-daemon --start --quiet --chuid $USERID:$GROUPID \ --nicelevel -15 --startas $DAEMON --exec $EXEC } stop () { timeout --version >/dev/null 2>&1 RESULT="$?" #send term signal after 10 seconds if [ "$RESULT" = "0" ]; then timeout -s9 10s /usr/lib/airtime/airtime_virtualenv/bin/python \ /usr/lib/airtime/pypo/bin/liquidsoap_scripts/liquidsoap_prepare_terminate.py else #some earlier versions of Ubuntu (Lucid) had a different timeout #command that takes different input parameters. timeout 10 /usr/lib/airtime/airtime_virtualenv/bin/python \ /usr/lib/airtime/pypo/bin/liquidsoap_scripts/liquidsoap_prepare_terminate.py fi # Send TERM after 5 seconds, wait at most 30 seconds. #start-stop-daemon --stop --oknodo --retry=TERM/10/KILL/5 --quiet --pidfile $PIDFILE start-stop-daemon --stop --oknodo --retry=TERM/10/KILL/5 --quiet --exec $EXEC rm -f $PIDFILE sleep 2 } start_with_monit () { start monit monitor airtime-liquidsoap >/dev/null 2>&1 } stop_with_monit() { monit unmonitor airtime-liquidsoap >/dev/null 2>&1 stop } case "${1:-''}" in 'stop') echo "* Stopping Liquidsoap without notifying Monit process watchdog. If Monit is * running it will automatically bring the Liquidsoap back up. You probably want * 'stop-with-monit' instead of 'stop'." echo -n "Stopping $NAME: " stop echo "Done." ;; 'start') echo "* Starting $NAME without Monit process watchdog. To make sure Monit is watching * Liquidsoap, use 'start-with-monit' instead of 'start'." echo -n "Starting $NAME: " start echo "Done." ;; 'restart') # restart commands here echo -n "Restarting $NAME: " stop start echo "Done." ;; 'status') if [ -f "$PIDFILE" ]; then pid=`cat $PIDFILE` if [ -d "/proc/$pid" ]; then echo "$NAME is running" exit 0 fi fi echo "$NAME is not running" exit 1 ;; 'start-with-monit') # restart commands here echo -n "Starting $NAME: " start_with_monit echo "Done." ;; 'stop-with-monit') # restart commands here echo -n "Stopping $NAME: " stop_with_monit echo "Done." ;; *) # no parameter specified echo "Usage: $SELF start|stop|restart|status" exit 1 ;; esac