debian/init.d.ex
changeset 12 09f5c71b3a76
equal deleted inserted replaced
11:2c1f279d3939 12:09f5c71b3a76
       
     1 #! /bin/sh
       
     2 #
       
     3 # skeleton	example file to build /etc/init.d/ scripts.
       
     4 #		This file should be used to construct scripts for /etc/init.d.
       
     5 #
       
     6 #		Written by Miquel van Smoorenburg <miquels@cistron.nl>.
       
     7 #		Modified for Debian
       
     8 #		by Ian Murdock <imurdock@gnu.ai.mit.edu>.
       
     9 #               Further changes by Javier Fernandez-Sanguino <jfs@debian.org>
       
    10 #
       
    11 # Version:	@(#)skeleton  1.9  26-Feb-2001  miquels@cistron.nl
       
    12 #
       
    13 
       
    14 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
       
    15 DAEMON=/usr/sbin/ftpipe
       
    16 NAME=ftpipe
       
    17 DESC=ftpipe
       
    18 
       
    19 test -x $DAEMON || exit 0
       
    20 
       
    21 LOGDIR=/var/log/ftpipe
       
    22 PIDFILE=/var/run/$NAME.pid
       
    23 DODTIME=1                   # Time to wait for the server to die, in seconds
       
    24                             # If this value is set too low you might not
       
    25                             # let some servers to die gracefully and
       
    26                             # 'restart' will not work
       
    27 
       
    28 # Include ftpipe defaults if available
       
    29 if [ -f /etc/default/ftpipe ] ; then
       
    30 	. /etc/default/ftpipe
       
    31 fi
       
    32 
       
    33 set -e
       
    34 
       
    35 running_pid()
       
    36 {
       
    37     # Check if a given process pid's cmdline matches a given name
       
    38     pid=$1
       
    39     name=$2
       
    40     [ -z "$pid" ] && return 1
       
    41     [ ! -d /proc/$pid ] &&  return 1
       
    42     cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
       
    43     # Is this the expected child?
       
    44     [ "$cmd" != "$name" ] &&  return 1
       
    45     return 0
       
    46 }
       
    47 
       
    48 running()
       
    49 {
       
    50 # Check if the process is running looking at /proc
       
    51 # (works for all users)
       
    52 
       
    53     # No pidfile, probably no daemon present
       
    54     [ ! -f "$PIDFILE" ] && return 1
       
    55     # Obtain the pid and check it against the binary name
       
    56     pid=`cat $PIDFILE`
       
    57     running_pid $pid $DAEMON || return 1
       
    58     return 0
       
    59 }
       
    60 
       
    61 force_stop() {
       
    62 # Forcefully kill the process
       
    63     [ ! -f "$PIDFILE" ] && return
       
    64     if running ; then
       
    65         kill -15 $pid
       
    66         # Is it really dead?
       
    67         [ -n "$DODTIME" ] && sleep "$DODTIME"s
       
    68         if running ; then
       
    69             kill -9 $pid
       
    70             [ -n "$DODTIME" ] && sleep "$DODTIME"s
       
    71             if running ; then
       
    72                 echo "Cannot kill $LABEL (pid=$pid)!"
       
    73                 exit 1
       
    74             fi
       
    75         fi
       
    76     fi
       
    77     rm -f $PIDFILE
       
    78     return 0
       
    79 }
       
    80 
       
    81 case "$1" in
       
    82   start)
       
    83 	echo -n "Starting $DESC: "
       
    84 	start-stop-daemon --start --quiet --pidfile $PIDFILE \
       
    85 		--exec $DAEMON -- $DAEMON_OPTS
       
    86         if running ; then
       
    87             echo "$NAME."
       
    88         else
       
    89             echo " ERROR."
       
    90         fi
       
    91 	;;
       
    92   stop)
       
    93 	echo -n "Stopping $DESC: "
       
    94 	start-stop-daemon --stop --quiet --pidfile $PIDFILE \
       
    95 		--exec $DAEMON
       
    96 	echo "$NAME."
       
    97 	;;
       
    98   force-stop)
       
    99 	echo -n "Forcefully stopping $DESC: "
       
   100         force_stop
       
   101         if ! running ; then
       
   102             echo "$NAME."
       
   103         else
       
   104             echo " ERROR."
       
   105         fi
       
   106 	;;
       
   107   #reload)
       
   108 	#
       
   109 	#	If the daemon can reload its config files on the fly
       
   110 	#	for example by sending it SIGHUP, do it here.
       
   111 	#
       
   112 	#	If the daemon responds to changes in its config file
       
   113 	#	directly anyway, make this a do-nothing entry.
       
   114 	#
       
   115 	# echo "Reloading $DESC configuration files."
       
   116 	# start-stop-daemon --stop --signal 1 --quiet --pidfile \
       
   117 	#	/var/run/$NAME.pid --exec $DAEMON
       
   118   #;;
       
   119   force-reload)
       
   120 	#
       
   121 	#	If the "reload" option is implemented, move the "force-reload"
       
   122 	#	option to the "reload" entry above. If not, "force-reload" is
       
   123 	#	just the same as "restart" except that it does nothing if the
       
   124 	#   daemon isn't already running.
       
   125 	# check wether $DAEMON is running. If so, restart
       
   126 	start-stop-daemon --stop --test --quiet --pidfile \
       
   127 		/var/run/$NAME.pid --exec $DAEMON \
       
   128 	&& $0 restart \
       
   129 	|| exit 0
       
   130 	;;
       
   131   restart)
       
   132     echo -n "Restarting $DESC: "
       
   133 	start-stop-daemon --stop --quiet --pidfile \
       
   134 		/var/run/$NAME.pid --exec $DAEMON
       
   135 	[ -n "$DODTIME" ] && sleep $DODTIME
       
   136 	start-stop-daemon --start --quiet --pidfile \
       
   137 		/var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
       
   138 	echo "$NAME."
       
   139 	;;
       
   140   status)
       
   141     echo -n "$LABEL is "
       
   142     if running ;  then
       
   143         echo "running"
       
   144     else
       
   145         echo " not running."
       
   146         exit 1
       
   147     fi
       
   148     ;;
       
   149   *)
       
   150 	N=/etc/init.d/$NAME
       
   151 	# echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
       
   152 	echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2
       
   153 	exit 1
       
   154 	;;
       
   155 esac
       
   156 
       
   157 exit 0