From aba52d5042d729b91e8345e88cea48980d6cfe95 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 11 Apr 2006 05:44:37 +0000 Subject: properly working debian startup/shutdown script. Pd is now a daemon! We just need sysloggin... svn path=/trunk/; revision=4875 --- scripts/debian/default/pd | 8 +++ scripts/debian/init.d/pd | 135 ++++++++++++++++++++++++++++++++++++++++++++++ scripts/init.d/pd | 94 -------------------------------- 3 files changed, 143 insertions(+), 94 deletions(-) create mode 100644 scripts/debian/default/pd create mode 100755 scripts/debian/init.d/pd delete mode 100755 scripts/init.d/pd diff --git a/scripts/debian/default/pd b/scripts/debian/default/pd new file mode 100644 index 00000000..d4801312 --- /dev/null +++ b/scripts/debian/default/pd @@ -0,0 +1,8 @@ +# this needs to be "yes" for it to start automatically +RUNPDDAEMON=yes + +# load your patches here +OPTIONS="-open /home/hans/cvs/pure-data/doc/tutorials/networking/chat-server.pd" + + + 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 +# + +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 diff --git a/scripts/init.d/pd b/scripts/init.d/pd deleted file mode 100755 index e67f6dce..00000000 --- a/scripts/init.d/pd +++ /dev/null @@ -1,94 +0,0 @@ -#!/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 -# - -PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin -DAEMON=/usr/bin/pd -NAME=pd -DESC="Pure Data" - -test -x $DAEMON || exit 0 - - -function start() { - /bin/su - arw -c "/usr/bin/pd -nogui" > /tmp/pd-`date +20%y-%m-%d_%H.%M.%S`.log 2>&1 & -} - -function stop() { - echo "quit;quit;quit;" | /usr/bin/pdsend 5555 - sleep 5 - /usr/bin/killall -KILL pd || echo "Warning: $DESC was not running" -} - -case "$1" in - start) - echo -n "Starting $DESC: $NAME" - start - #start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \ - # --exec $DAEMON - echo "." - ;; - stop) - echo -n "Stopping $DESC: $NAME " - stop - #start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \ - # --exec $DAEMON - 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" - stop - #start-stop-daemon --stop --quiet --pidfile \ - # /var/run/$NAME.pid --exec $DAEMON - sleep 5 - start - #start-stop-daemon --start --quiet --pidfile \ - # /var/run/$NAME.pid --exec $DAEMON - 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 -- cgit v1.2.1