1 #! /bin/sh 2 ### BEGIN INIT INFO 3 # Provides: APPLICATION_PACKAGE 4 # Required-Start: 5 # Required-Stop: 6 # Default-Start: 2 3 4 5 7 # Default-Stop: 0 1 6 8 # Description: APPLICATION_DESCRIPTION 9 ### END INIT INFO 10 11 # Do NOT "set -e" 12 13 # PATH should only include /usr/* if it runs after the mountnfs.sh script 14 PATH=/sbin:/usr/sbin:/bin:/usr/bin 15 DESC=APPLICATION_DESCRIPTION 16 NAME=APPLICATION_PACKAGE 17 DAEMON=/opt/APPLICATION_NAME/APPLICATION_LAUNCHER_FILENAME 18 DAEMON_ARGS="" 19 PIDFILE=/var/run/$NAME.pid 20 SCRIPTNAME=/etc/init.d/$NAME 21 22 # Exit if the package is not installed 23 [ -x "$DAEMON" ] || exit 0 24 25 # Read configuration variable file if it is present 26 [ -r /etc/default/$NAME ] && . /etc/default/$NAME 27 28 # Load the VERBOSE setting and other rcS variables 29 . /lib/init/vars.sh 30 31 # Define LSB log_* functions. 32 # Depend on lsb-base (>= 3.2-14) to ensure that this file is present 33 # and status_of_proc is working. 34 . /lib/lsb/init-functions 35 36 # 37 # Function that starts the daemon/service 38 # 39 # Note that start-stop-daemon runs in the background as native launcher don't detach 40 # 41 do_start() 42 { 43 # Return 44 # 0 if daemon has been started 45 # 1 if daemon was already running 46 # 2 if daemon could not be started 47 start-stop-daemon --start --background --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ 48 || return 1 49 start-stop-daemon --start --background --quiet --pidfile $PIDFILE --exec $DAEMON -- \ 50 $DAEMON_ARGS \ 51 || return 2 52 # Add code here, if necessary, that waits for the process to be ready 53 # to handle requests from services started subsequently which depend 54 # on this one. As a last resort, sleep for some time. 55 } 56 57 # 58 # Function that stops the daemon/service 59 # 60 do_stop() 61 { 62 # Return 63 # 0 if daemon has been stopped 64 # 1 if daemon was already stopped 65 # 2 if daemon could not be stopped 66 # other if a failure occurred 67 start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME 68 RETVAL="$?" 69 [ "$RETVAL" = 2 ] && return 2 70 # Wait for children to finish too if this is a daemon that forks 71 # and if the daemon is only ever run from this initscript. 72 # If the above conditions are not satisfied then add some other code 73 # that waits for the process to drop all resources that could be 74 # needed by services started subsequently. A last resort is to 75 # sleep for some time. 76 start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON 77 [ "$?" = 2 ] && return 2 78 # Many daemons don't delete their pidfiles when they exit. 79 rm -f $PIDFILE 80 return "$RETVAL" 81 } 82 83 # 84 # Function that sends a SIGHUP to the daemon/service 85 # 86 do_reload() { 87 # 88 # If the daemon can reload its configuration without 89 # restarting (for example, when it is sent a SIGHUP), 90 # then implement that here. 91 # 92 start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME 93 return 0 94 } 95 96 case "$1" in 97 start) 98 [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" 99 do_start 100 case "$?" in 101 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 102 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; 103 esac 104 ;; 105 stop) 106 [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" 107 do_stop 108 case "$?" in 109 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 110 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; 111 esac 112 ;; 113 status) 114 status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? 115 ;; 116 #reload|force-reload) 117 # 118 # If do_reload() is not implemented then leave this commented out 119 # and leave 'force-reload' as an alias for 'restart'. 120 # 121 #log_daemon_msg "Reloading $DESC" "$NAME" 122 #do_reload 123 #log_end_msg $? 124 #;; 125 restart|force-reload) 126 # 127 # If the "reload" option is implemented then remove the 128 # 'force-reload' alias 129 # 130 log_daemon_msg "Restarting $DESC" "$NAME" 131 do_stop 132 case "$?" in 133 0|1) 134 do_start 135 case "$?" in 136 0) log_end_msg 0 ;; 137 1) log_end_msg 1 ;; # Old process is still running 138 *) log_end_msg 1 ;; # Failed to start 139 esac 140 ;; 141 *) 142 # Failed to stop 143 log_end_msg 1 144 ;; 145 esac 146 ;; 147 *) 148 #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 149 echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 150 exit 3 151 ;; 152 esac 153 154 :