diff options
Diffstat (limited to 'scripts/debian/init.d')
-rwxr-xr-x | scripts/debian/init.d/pd | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/scripts/debian/init.d/pd b/scripts/debian/init.d/pd new file mode 100755 index 00000000..70cae357 --- /dev/null +++ b/scripts/debian/init.d/pd @@ -0,0 +1,135 @@ +#!/bin/bash -e +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# +# This is a SysV-style startup script for Pd. It has been used on Debian +# extensively but should work on other SysV platforms. +# +# .hc <hans@at.or.at> +# + +set -e + +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +DESC="Pure Data" +NAME=pd +DAEMON=/usr/local/bin/$NAME +PIDFILE=/var/run/$NAME.pid +SCRIPTNAME=/etc/init.d/$NAME + +# Gracefully exit if the package has been removed. +test -x $DAEMON || exit 0 + +# options +RUNPDDAEMON=no +USER=nobody +PORT=34985 + +# Read config file if it is present. +if [ -r /etc/default/$NAME ] +then + . /etc/default/$NAME +fi + +if [ "$RUNPDDAEMON" != "yes" ];then + echo "Pd not configured to run as a daemon. Edit /etc/default/$NAME." + exit 1 +fi + +if [ "x$USER" = "x" ] +then + echo "Error: empty USER name" + exit 1 +fi + +PARAMS="-nogui -noaudio -nomidi $OPTIONS" + +# for the log file +DATE=`date +20%y-%m-%d_%H.%M.%S` + +# +# Function that starts the daemon/service. +# +d_start() { +# /bin/su - arw -c "/usr/bin/pd -nogui" > /tmp/pd-`date +20%y-%m-%d_%H.%M.%S`.log 2>&1 & + start-stop-daemon -v --start --quiet --background --make-pidfile \ + --chuid $USER --pidfile $PIDFILE --exec $DAEMON -- $PARAMS +} + +# +# Function that stops the daemon/service. +# +d_stop() { + start-stop-daemon --stop --quiet --pidfile $PIDFILE \ + --user $USER --name $NAME --retry 5 +# echo "quit;quit;quit;" | /usr/bin/pdsend $PORT +# sleep 5 +# /usr/bin/killall -KILL pd || echo "Warning: $DESC was not running" +} + +# +# Function that sends a SIGHUP to the daemon/service. +# +d_reload() { + start-stop-daemon --stop --quiet --pidfile $PIDFILE \ + --name $NAME --signal 1 +} + +case "$1" in + start) + echo -n "Starting $DESC: $NAME" + d_start + echo "." + ;; + stop) + echo -n "Stopping $DESC: $NAME " + d_stop + echo "." + ;; + #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 -n "Reloading $DESC configuration..." + # start-stop-daemon --stop --signal 1 --quiet --pidfile \ + # /var/run/$NAME.pid --exec $DAEMON + # echo "done." + #;; + 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". + # + echo -n "Restarting $DESC: $NAME" + d_stop + sleep 1 + d_start + echo "." + ;; + *) + 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 |