1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
#!/bin/sh -e
#
# skeleton example file to build /etc/init.d/ scripts.
# This file should be used to construct scripts for /etc/init.d.
#
# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
# Modified for Debian GNU/Linux
# by Ian Murdock <imurdock@gnu.ai.mit.edu>.
# and for Yiff-server by Adam Majer <adamm@galacticasoftware.com>
# Version: @(#)skeleton 1.8 03-Mar-1998 miquels@cistron.nl
#
### BEGIN INIT INFO
# Provides: yiff
# Required-Start: $local_fs $remote_fs $syslog $named $network
# Required-Stop: $local_fs $remote_fs $syslog $named $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Y Sound Server
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/yiff
NAME=yiff
DESC="Y Sound Server"
DAEMON_PARAM=/etc/yiff/yiffrc
PIDFILE=/var/run/yiff/yiff.pid
DAEMON_USER=yiff
DAEMON_GROUP=yiff
test -f $DAEMON || exit 0
# Running function, primarily due to Javier Fernandez-Sanguino Pen~a in bug
# report 334617.
running()
{
# No pidfile, probably no daemon present
#
[ ! -f "$PIDFILE" ] && return 1
pid=`cat $PIDFILE`
# No pid, probably no daemon present
[ -z "$pid" ] && return 1
[ ! -f /proc/"$pid"/cmdline ] && return 1
cmd=`cat /proc/"$pid"/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
[ "$cmd" != "$DAEMON" ] && return 1
return 0
}
# Create the location for the pidfile and let the user we will run
# as create a file there
piddir=`dirname $PIDFILE`
if [ ! -d "$piddir" ] ; then
mkdir -p $piddir
chmod 754 $piddir
chown $DAEMON_USER:$DAEMON_GROUP $piddir
fi
set -e
case "$1" in
start)
echo -n "Starting $DESC: "
if [ "`grep -i sound /proc/devices`" = "" -a "`grep -i alsa /proc/devices`" = "" -o ! -e /dev/dsp ]; then
echo "failed."
echo ">>"
echo ">> ALSA or OSS support NOT loaded so $DESC not started !"
echo ">> Please install your sound drivers before you start $DESC."
echo ">>"
else
# TODO: Chroot the server into a given location
start-stop-daemon --start --background --quiet --chuid $DAEMON_USER:$DAEMON_GROUP --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_PARAM
# We'll pause for a second to give this time to actually start.
# There should really be a better way to solve such races....
sleep 1
if running ; then
echo "$NAME."
else
echo "ERROR."
exit 1
fi
fi
;;
stop)
echo -n "Stopping $DESC:"
if ls $piddir/yiff*.pid 2>/dev/null >&2 ; then
for pid in $piddir/yiff*.pid
do
start-stop-daemon --user $DAEMON_USER --stop --quiet --pidfile $PIDFILE --oknodo
done
fi
echo "$NAME."
;;
#reload)
#
# If the daemon can reload its config files on the fly
# for example by sending it SIGHUP, do it here.
#
# If the daemon responds to changes in its config file
# directly anyway, make this a do-nothing entry.
#
# echo "Reloading $DESC configuration files."
# start-stop-daemon --stop --signal 1 --quiet --pidfile \
# /var/run/$NAME.pid --exec $DAEMON
#;;
restart|force-reload)
#
# If the "reload" option is implemented, move the "force-reload"
# option to the "reload" entry above. If not, "force-reload" is
# just the same as "restart".
#
/etc/init.d/yiff-server stop
sleep 1
/etc/init.d/yiff-server start
;;
*)
N=/etc/init.d/$NAME
# echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
|