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