aboutsummaryrefslogtreecommitdiff
path: root/scripts/debian/init.d
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/debian/init.d')
-rwxr-xr-xscripts/debian/init.d/pd135
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