#! /bin/bash ### BEGIN INIT INFO # Provides: tinydns # Required-Start: $local_fs $remote_fs $network # Required-Stop: $local_fs $remote_fs $network # Should-Start: $syslog # Should-Stop: $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: tinydns daemon processes # Description: Start the TinyDNS resolver ### END INIT INFO # Documentation # man tinydns # Load the VERBOSE setting and other rcS variables . /lib/init/vars.sh # Define LSB log_* functions. . /lib/lsb/init-functions NAME=tinydns DAEMON=/usr/bin/$NAME DAEMON_USER=djbdns DESC="the tinydns daemon" ROOTDIR=/var/lib/djbdns PATH=/sbin:/bin:/usr/sbin:/usr/bin LAUNCHER=/usr/bin/envuidgid LAUNCHER_ARGS="$DAEMON_USER envdir ./env softlimit -d300000 $DAEMON" PIDFILE=/run/$NAME.pid # Exit if executable is not installed [ -x "$DAEMON" ] || exit 0 set -x case "$1" in start) if [ ! -d "$ROOTDIR" ]; then log_action_msg "Not starting $DESC: $ROOTDIR is missing." exit 0 fi log_action_begin_msg "Starting $DESC" if start-stop-daemon --stop --signal 0 --quiet --pidfile $PIDFILE --exec $DAEMON; then log_action_end_msg 0 "already running" else if start-stop-daemon --start --verbose --make-pidfile --chdir $ROOTDIR --pidfile $PIDFILE --exec $LAUNCHER -- $LAUNCHER_ARGS then log_action_end_msg 0 else log_action_end_msg 1 exit 1 fi fi ;; stop) log_action_begin_msg "Stopping $DESC" pid=$(cat $PIDFILE 2>/dev/null) || true if test ! -f $PIDFILE -o -z "$pid"; then log_action_end_msg 0 "not running - there is no $PIDFILE" exit 0 fi if start-stop-daemon --stop --signal INT --quiet --pidfile $PIDFILE --exec $DAEMON; then rm -f $PIDFILE elif kill -0 $pid 2>/dev/null; then log_action_end_msg 1 "Is $pid not $NAME? Is $DAEMON a different binary now?" exit 1 else log_action_end_msg 1 "$DAEMON died: process $pid not running; or permission denied" exit 1 fi ;; reload) echo "Not implemented, use restart" exit 1 ;; restart|force-reload) $0 stop $0 start ;; status) if test ! -r $(dirname $PIDFILE); then log_failure_msg "cannot read PID file $PIDFILE" exit 4 fi pid=$(cat $PIDFILE 2>/dev/null) || true if test ! -f $PIDFILE -o -z "$pid"; then log_failure_msg "$NAME is not running" exit 3 fi if ps "$pid" >/dev/null 2>&1; then log_success_msg "$NAME is running" exit 0 else log_failure_msg "$NAME is not running" exit 1 fi ;; *) log_action_msg "Usage: $0 {start|stop|restart|force-reload|status}" >&2 exit 1 ;; esac exit 0