#!/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 # set -e PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DESC="Pure Data" NAME=pd DAEMON=/usr/bin/$NAME PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME # options RUNPDDAEMON=no USER=nobody #PORT=34985 # TODO: write daemon.pd patch which is always started and provides basic # commands, like start, stop, quit, dsp, etc. over a TCP port # TODO: figure out how to have a log of the stderr/console output # Read config file if it is present. if [ -r /etc/default/$NAME ] then . /etc/default/$NAME fi # Gracefully exit if the package has been removed. test -x $DAEMON || exit 0 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 # this is meant for running Pd as a server, so it turns off everything 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() { # if you want a log, use this line (until Pd gets syslog support) # /bin/su - $USER -c "$DAEMON $PARAMS" > /tmp/pd-$DATE.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 # if you used the /bin/su command in d_start(), you need this to stop Pd: # /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