[mapguide-commits] r8969 - trunk/MgDev/Server/src/Core

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Wed May 25 08:04:48 PDT 2016


Author: jng
Date: 2016-05-25 08:04:48 -0700 (Wed, 25 May 2016)
New Revision: 8969

Modified:
   trunk/MgDev/Server/src/Core/mapguidectl
Log:
#2527: Improve mgserver service control script:
 - define log_end_msg if not defined in lsb functions (as in CentOS 6)
 - define status and restart actions
 - exit with failures if something goes wrong
 - warn user if trying to start MapGuide and it is already running
 - warn user if trying to stop MapGuide and it is not running
 - No bash-isms, allowing it to work in base un-configured Ubuntu (whose default shell is dash, not bash)

Patch by Gabriele Monfardini, tested by me.

Modified: trunk/MgDev/Server/src/Core/mapguidectl
===================================================================
--- trunk/MgDev/Server/src/Core/mapguidectl	2016-05-25 13:07:50 UTC (rev 8968)
+++ trunk/MgDev/Server/src/Core/mapguidectl	2016-05-25 15:04:48 UTC (rev 8969)
@@ -1,33 +1,81 @@
 #!/bin/sh
+# chkconfig: 345 35 65
+# description: MapGuide Server Daemon
+ 
 # MapGuide init script
 . /lib/lsb/init-functions
+ 
+# Defined here for distributions that don't define log_end_msg
+type log_end_msg > /dev/null 2>&1 || log_end_msg () {
+  retval=$1
+  if [ $retval -eq 0 ]; then
+    log_success_msg
+  else
+    log_failure_msg
+  fi
+  return $retval
+}
 
+progname="mgserver"
+fullprogname="mgserver daemon"
+
+do_start () {
+  echo -n "Starting MapGuide Server..."
+  pid=$(pgrep -f -u root "${fullprogname}")
+  ret=0
+  if [ -z "$pid" ]
+  then
+    cd /usr/local/mapguideopensource/server/bin && ./mgserverd.sh > /dev/null 
+    ret=$?
+  else
+    echo 
+    echo -n "MapGuide Server already running (pid $pid)"
+  fi
+  log_end_msg $ret
+}
+
+do_stop () {
+  echo -n "Stopping MapGuide Server"
+  pid=$(pgrep -f -u root "${fullprogname}")
+  ret=0
+  if [ -z "$pid" ]
+  then
+    echo 
+    echo -n "MapGuide Server not running"
+  else
+    /bin/kill $pid
+    ret=$?
+  fi
+  log_end_msg $ret
+}
+
+ 
 # Must be superuser
-if [[ $EUID -ne 0 ]]; then
-    echo "You must have superuser privileges to run this script"
-    exit 1
+if [ $(id -u) -ne 0 ]; then
+  log_failure_msg "You must have superuser privileges to run this script"
+  exit 1
 fi
-
+ 
 case "$1" in
- start)
-   log_daemon_msg "Starting MapGuide Server"
-   pushd /usr/local/mapguideopensource/server/bin > /dev/null
-   ./mgserverd.sh
-   popd > /dev/null
-   log_end_msg 0
-   ;;
- stop)
-   log_daemon_msg "Stopping MapGuide Server"
-   MGPROCESS=`/usr/bin/pgrep -f -u root "mgserver daemon"`
-   if [ "$MGPROCESS" != "" ]
-   then
-     /bin/kill $MGPROCESS
-   fi
-   log_end_msg 0
-   ;;
- *)
-   echo "Usage: $0 {start|stop}"
-   exit 1
-   ;;
+  start)
+    do_start
+    ;;
+  stop)
+    do_stop
+    ;;
+  status)
+    pid=$(pgrep -f -u root "${fullprogname}")
+    [ -z "$pid" ] && echo "$progname is stopped" && RETVAL=3 && exit $RETVAL
+    echo "$progname (pid $pid) is running..."
+    ;;
+  restart)
+    do_stop
+    sleep 2
+    do_start
+    ;;
+  *)
+    echo "Usage: $0 {start|stop|status|restart}"
+    exit 1
+    ;;
 esac
 exit 0



More information about the mapguide-commits mailing list