#!/bin/sh### BEGIN INIT INFO# Provides: ziproxy# Required-Start: $network $local_fs# Required-Stop: $network $local_fs# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Short-Description: Init script for ziproxy# Description: This is the init script for ziproxy.### END INIT INFOPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/binZIPROXY=/usr/bin/ziproxyNAME=ziproxyDESC=ziproxytest -x $ZIPROXY || exit 0PIDFILE=/var/run/$NAME.pidDODTIME=1 # Time to wait for the server to die, in seconds # If this value is set too low you might not # let some servers to die gracefully and # 'restart' will not work# Include ziproxy defaults if availableif [ -f /etc/default/ziproxy ] ; then . /etc/default/ziproxyfiDAEMON_OPTS="$DAEMON_OPTS -d"set -erunning_pid(){ # Check if a given process pid's cmdline matches a given name pid=$1 name=$2 [ -z "$pid" ] && return 1 [ ! -d /proc/$pid ] && return 1 cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1` # Is this the expected child? ##[ "$cmd" != "$name" ] && return 1 [ "$cmd" != "$name" ] && return 1 return 0}running(){# Check if the process is running looking at /proc# (works for all users) # No pidfile, probably no daemon present [ ! -f "$PIDFILE" ] && return 1 # Obtain the pid and check it against the binary name pid=`cat $PIDFILE` running_pid $pid $ZIPROXY || return 1 return 0}force_stop() {# Forcefully kill the process [ ! -f "$PIDFILE" ] && return if running ; then kill -15 $pid # Is it really dead? [ -n "$DODTIME" ] && sleep "$DODTIME"s if running ; then kill -9 $pid [ -n "$DODTIME" ] && sleep "$DODTIME"s if running ; then echo "Cannot kill $NAME (pid=$pid)!" exit 1 fi fi fi rm -f $PIDFILE return 0}is_not_running() { if ! running; then echo "$NAME is not running." exit 1 fi}case "$1" in start) echo -n "Starting $DESC: " if running; then echo "$NAME is already running." exit 1 fi start-stop-daemon --start --quiet --pidfile $PIDFILE \ --exec $ZIPROXY -- $DAEMON_OPTS > $PIDFILE if running; then echo "$NAME." else echo " ERROR." fi ;; stop) echo -n "Stopping $DESC: " start-stop-daemon --stop --quiet --pidfile $PIDFILE \ --exec $ZIPROXY echo "$NAME." ;; force-stop) echo -n "Forcefully stopping $DESC: " is_not_running force_stop if ! running; then echo "$NAME." else echo " ERROR." fi ;; #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 "Reloading $DESC configuration files." # start-stop-daemon --stop --signal 1 --quiet --pidfile \ # /var/run/$NAME.pid --exec $ZIPROXY #;; 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" except that it does nothing if the # daemon isn't already running. # check wether $ZIPROXY is running. If so, restart start-stop-daemon --stop --test --quiet --pidfile \ /var/run/$NAME.pid --exec $ZIPROXY \ && $0 restart \ || exit 0 ;; restart) echo -n "Restarting $DESC: " is_not_running start-stop-daemon --stop --quiet --pidfile \ /var/run/$NAME.pid --exec $ZIPROXY [ -n "$DODTIME" ] && sleep $DODTIME start-stop-daemon --start --quiet --pidfile \ /var/run/$NAME.pid --exec $ZIPROXY -- $DAEMON_OPTS > $PIDFILE echo "$NAME." ;; status) echo -n "$NAME is " if running ; then echo "running." else echo "not running." exit 1 fi ;; *) N=/etc/init.d/$NAME echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2 exit 1 ;;esacexit 0