[Pkg-php-commits] [php/debian-sid] Update php5-fpm.init according to latest /etc/init.d/skeleton

Ondřej Surý ondrej at sury.org
Thu Mar 24 08:13:50 UTC 2011


---
 debian/php5-fpm.init |  181 ++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 139 insertions(+), 42 deletions(-)

diff --git a/debian/php5-fpm.init b/debian/php5-fpm.init
index 4889c55..25badb3 100644
--- a/debian/php5-fpm.init
+++ b/debian/php5-fpm.init
@@ -1,68 +1,165 @@
 #!/bin/sh
-
 ### BEGIN INIT INFO
 # Provides:          php-fpm php5-fpm
 # Required-Start:    $remote_fs $network
 # Required-Stop:     $remote_fs $network
 # Default-Start:     2 3 4 5
 # Default-Stop:
-# Short-Description: starts php-fpm
+# Short-Description: starts php5-fpm
+# Description:       Starts PHP5 FastCGI Process Manager Daemon
 ### END INIT INFO
 
-set -u
+# Author: Ondrej Sury <ondrej at debian.org>
 
-DAEMON="PHP5 FPM"
-FPM_CMD=/usr/sbin/php5-fpm
-FPM_CONF=/etc/php5/fpm/php-fpm.conf
-FPM_PID=/var/run/php5-fpm.pid
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+DESC="PHP5 FastCGI Process Manager"
+NAME=php5-fpm
+DAEMON=/usr/sbin/$NAME
+DAEMON_ARGS="--fpm-config /etc/php5/fpm/php-fpm.conf"
+PIDFILE=/var/run/php5-fpm.pid
 TIMEOUT=30
+SCRIPTNAME=/etc/init.d/$NAME
 
-FPM_OPTIONS="--fpm-config $FPM_CONF"
-SSD_OPTIONS="--oknodo --quiet --pidfile $FPM_PID --exec $FPM_CMD"
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
 
-. /lib/lsb/init-functions
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
 
-# Test the correctness of the config file
-FPM_ERROR=$($FPM_CMD $FPM_OPTIONS -t | grep "\[ERROR\]")
+# Load the VERBOSE setting and other rcS variables
+. /lib/init/vars.sh
 
-if [ -n "${FPM_ERROR}" ]; then
-    echo "Please check your configuration file..."
-    echo $FPM_ERROR
-    exit 1
-fi
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
 
-case "$1" in
-    start)
-	log_begin_msg "Starting $DAEMON..."
+#
+# Function to check the correctness of the config file
+#
+do_check()
+{
+    FPM_ERROR=$($DAEMON $DAEMON_ARGS -t 2>&1| grep "\[ERROR\]")
 
-	/sbin/start-stop-daemon --start $SSD_OPTIONS -- $FPM_OPTIONS
+    if [ -n "${FPM_ERROR}" ]; then
+	echo "Please check your configuration file..."
+	echo $FPM_ERROR
+	return 1
+    fi
+    return 0
+}
 
-	log_end_msg $?
-    ;;
-    stop)
-	log_begin_msg "Stopping $DAEMON..."
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+	# Return
+	#   0 if daemon has been started
+	#   1 if daemon was already running
+	#   2 if daemon could not be started
+	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+		|| return 1
+	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+		$DAEMON_ARGS \
+		|| return 2
+	# Add code here, if necessary, that waits for the process to be ready
+	# to handle requests from services started subsequently which depend
+	# on this one.  As a last resort, sleep for some time.
+}
 
-	/sbin/start-stop-daemon --stop $SSD_OPTIONS
-	log_end_msg $?
-    ;;
-    graceful-stop)
-	log_begin_msg "Gracefully stopping $DAEMON..."
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+	# Return
+	#   0 if daemon has been stopped
+	#   1 if daemon was already stopped
+	#   2 if daemon could not be stopped
+	#   other if a failure occurred
+	start-stop-daemon --stop --quiet --retry=TERM/$TIMEOUT/KILL/5 --pidfile $PIDFILE --name $NAME
+	RETVAL="$?"
+	[ "$RETVAL" = 2 ] && return 2
+	# Wait for children to finish too if this is a daemon that forks
+	# and if the daemon is only ever run from this initscript.
+	# If the above conditions are not satisfied then add some other code
+	# that waits for the process to drop all resources that could be
+	# needed by services started subsequently.  A last resort is to
+	# sleep for some time.
+	start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+	[ "$?" = 2 ] && return 2
+	# Many daemons don't delete their pidfiles when they exit.
+	rm -f $PIDFILE
+	return "$RETVAL"
+}
 
-	/sbin/start-stop-daemon --stop --retry QUIT/$TIMEOUT/TERM $SSD_OPTIONS
-	log_end_msg $?
-    ;;
-    restart)
-	$0 stop
-	$0 start
-    ;;
-    reload|force-reload)
-	log_begin_msg "Reloading $DAEMON..."
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+	#
+	# If the daemon can reload its configuration without
+	# restarting (for example, when it is sent a SIGHUP),
+	# then implement that here.
+	#
+	start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+	return 0
+}
 
-	/sbin/start-stop-daemon --stop --signal USR2 $SSD_OPTIONS
+case "$1" in
+    start)
+	[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+	do_check
+	case "$?" in
+	    0)
+		do_start
+		case "$?" in
+		    0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+		    2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+		esac
+		;;
+	    1) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+	esac
+	;;
+    stop)
+	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+	do_stop
+	case "$?" in
+		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+	esac
+	;;
+    status)
+        status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
+        ;;
+    check)
+        do_check
+	;;
+    reload|force-reload)
+	log_daemon_msg "Reloading $DESC" "$NAME"
+	do_reload
 	log_end_msg $?
-    ;;
+	;;
+    restart)
+	log_daemon_msg "Restarting $DESC" "$NAME"
+	do_stop
+	case "$?" in
+	  0|1)
+		do_start
+		case "$?" in
+			0) log_end_msg 0 ;;
+			1) log_end_msg 1 ;; # Old process is still running
+			*) log_end_msg 1 ;; # Failed to start
+		esac
+		;;
+	  *)
+	  	# Failed to stop
+		log_end_msg 1
+		;;
+	esac
+	;;
     *)
-	echo "Usage: $0 {start|stop|graceful-stop|restart|reload|force-reload}"
+	echo "Usage: $SCRIPTNAME {start|stop|status|restart|reload|force-reload}" >&2
 	exit 1
     ;;
 esac
-- 
1.7.1





More information about the Pkg-php-commits mailing list