packages: mongodb/mongodb.init Make init script sane

aredridel aredridel at pld-linux.org
Mon Apr 23 00:27:19 CEST 2012


Author: aredridel                    Date: Sun Apr 22 22:27:18 2012 GMT
Module: packages                      Tag: HEAD
---- Log message:
Make init script sane

---- Files affected:
packages/mongodb:
   mongodb.init (1.1 -> 1.2) 

---- Diffs:

================================================================
Index: packages/mongodb/mongodb.init
diff -u packages/mongodb/mongodb.init:1.1 packages/mongodb/mongodb.init:1.2
--- packages/mongodb/mongodb.init:1.1	Fri Sep 17 05:26:52 2010
+++ packages/mongodb/mongodb.init	Mon Apr 23 00:27:13 2012
@@ -1,22 +1,20 @@
 #!/bin/sh
 #
-# /etc/init.d/mongod
+# mongod		mongod
+#
+# chkconfig:	345 60 40
+#
+# description:	mongod is a cache daemon.
+#
+# processname:	mongod
+# pidfile:      /var/run/mongod.pid
 #
-### BEGIN INIT INFO
-# Provides:          mongod
-# Required-Start: $syslog $local_fs $network  
-# Required-Stop:  $syslog $local_fs $network  
-# Should-Start:   $remote_fs
-# Should-Stop:    $remote_fs
-# Default-Start:     3 4 5
-# Default-Stop:      0 1 2 6
-# Short-Description: MongoDB server
-# Description:       Starts and stops the MongoDB daemon
-### END INIT INFO
 
+# Source function library
+. /etc/rc.d/init.d/functions
 
-# Check for missing binaries (stale symlinks should not happen)
-# Note: Special treatment of stop for LSB conformance
+# Get network config
+. /etc/sysconfig/network
 
 MONGOD_BIN="/usr/bin/mongod"
 MONGOD_LOGFILE="/var/log/mongo/mongod.log"
@@ -26,117 +24,83 @@
 MONGOD_USER=mongod
 MONGOD_GROUP=mongod
 
-test -x $MONGOD_BIN || { echo "$MONGOD_BIN not installed"; 
-        if [ "$1" = "stop" ]; then exit 0;
-        else exit 5; fi; }
-
-# Check for existence of needed config file and read it
-# test -r $MONGOD_CONFIG || { echo "$MONGOD_CONFIG not existing";
-#         if [ "$1" = "stop" ]; then exit 0;
-#         else exit 6; fi; }
-# Read config
-# . $MONGOD_CONFIG
-
-# Read config
-[ -e $MONGOD_CONFIG ] && . $MONGOD_CONFIG
-
-
-# Source LSB init functions
-# providing start_daemon, killproc, pidofproc, 
-# log_success_msg, log_failure_msg and log_warning_msg.
-# This is currently not used by UnitedLinux based distributions and
-# not needed for init scripts for UnitedLinux only. If it is used,
-# the functions from rc.status should not be sourced or used.
-#. /lib/lsb/init-functions
-
-# Shell functions sourced from /etc/rc.status:
-#      rc_check         check and set local and overall rc status
-#      rc_status        check and set local and overall rc status
-#      rc_status -v     be verbose in local rc status and clear it afterwards
-#      rc_status -v -r  ditto and clear both the local and overall rc status
-#      rc_status -s     display "skipped" and exit with status 3
-#      rc_status -u     display "unused" and exit with status 3
-#      rc_failed        set local and overall rc status to failed
-#      rc_failed <num>  set local and overall rc status to <num>
-#      rc_reset         clear both the local and overall rc status
-#      rc_exit          exit appropriate to overall rc status
-#      rc_active        checks whether a service is activated by symlinks
-. /etc/rc.status
-
-# Reset status of this service
-rc_reset
-
-# Return values acc. to LSB for all commands but status:
-# 0          - success
-# 1       - generic or unspecified error
-# 2       - invalid or excess argument(s)
-# 3       - unimplemented feature (e.g. "reload")
-# 4       - user had insufficient privileges
-# 5       - program is not installed
-# 6       - program is not configured
-# 7       - program is not running
-# 8--199  - reserved (8--99 LSB, 100--149 distrib, 150--199 appl)
-# 
-# Note that starting an already running service, stopping
-# or restarting a not-running service as well as the restart
-# with force-reload (in case signaling is not supported) are
-# considered a success.
-
-# Set ulimit setting
-# ulimit -n 10240
-ulimit -n 12000
+# Get service config
+[ -f /etc/sysconfig/mongod ] && . /etc/sysconfig/mongod
 
+start() {
+	# Check if the service is already running?
+	if [ -f /var/lock/subsys/mongod ]; then
+		msg_already_running "mongod"
+		return
+	fi
+
+    msg_starting "mongod"
+    daemon --pidfile $MONGOD_PIDFILE --user $MONGOD_USER \
+        $MONGOD_BIN --config /etc/mongod.conf run
+    ret=$?
+    [ $ret = 0 ] || RETVAL=$?
+	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/mongod
+}
+
+stop() {
+	if [ ! -f /var/lock/subsys/mongod ]; then
+		msg_not_running "mongod"
+		return
+	fi
+
+    msg_stopping "mongod"
+    killproc --pidfile $MONGOD_PIDFILE mongod
+	rm -f /var/lock/subsys/mongod >/dev/null 2>&1
+}
+
+condrestart() {
+	if [ ! -f /var/lock/subsys/mongod ]; then
+		msg_not_running "mongod"
+		RETVAL=$1
+		return
+	fi
+
+	stop
+	start
+}
+
+reload() {
+	if [ ! -f /var/lock/subsys/mongod ]; then
+		msg_not_running "mongod"
+		RETVAL=7
+		return
+	fi
+
+    msg_reloading "mongod"
+    killproc --pidfile $MONGOD_PIDFILE mongod -HUP
+}
+
+RETVAL=0
+# See how we were called.
 case "$1" in
-    start)
-        echo -n "Starting service MongoDB "
-        ## Start daemon with startproc(8). If this fails
-        ## the return value is set appropriately by startproc.
-        /sbin/startproc -u $MONGOD_USER -g $MONGOD_GROUP -s -e $MONGOD_BIN --config /etc/mongod.conf run
-        # Remember status and be verbose
-        rc_status -v
-        ;;
-    stop)
-        echo -n "Stopping service MongoDB "
-#        killproc -p /var/lib/mongo/mongod.lock -t30 -TERM /usr/bin/mongod
-        /sbin/killproc -TERM $MONGOD_BIN
-        rc_status -v
-        ;;
-    try-restart|condrestart)
-        ## Do a restart only if the service was active before.
-        ## Note: try-restart is now part of LSB (as of 1.9).
-        ## RH has a similar command named condrestart.
-        if test "$1" = "condrestart"; then
-            echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}"
-        fi
-        $0 status
-        if test $? = 0; then
-            $0 restart
-        else
-            rc_reset        # Not running is not a failure.
-        fi
-        # Remember status and be quiet
-        rc_status
-        ;;
-    restart)
-        ## Stop the service and regardless of whether it was
-        ## running or not, start it again.
-        $0 stop
-        $0 start
-
-        # Remember status and be quiet
-        rc_status
-        ;;
-    reload)
-        $0 restart
-        ;;
-    status)
-        echo -n "Checking for service MongoDB: "
-        /sbin/checkproc -p $MONGOD_PIDFILE $MONGOD_BIN
-        rc_status -v
-        ;;
-    *)
-        echo "Usage: $0 {start|stop|status|try-restart|restart|reload}"
-        exit 1
-        ;;
+  start)
+	start
+	;;
+  stop)
+	stop
+	;;
+  restart)
+	stop
+	start
+	;;
+  try-restart)
+	condrestart 0
+	;;
+  reload|force-reload)
+  	reload
+	;;
+  status)
+	status mongod
+	exit $?
+	;;
+  *)
+	msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|status}"
+	exit 3
 esac
-rc_exit
+
+exit $RETVAL
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/packages/mongodb/mongodb.init?r1=1.1&r2=1.2



More information about the pld-cvs-commit mailing list