jigsaw contrib: jigsaw.server startup script

Hi !

----

Here comes (as an attachment) the Solaris daemon script jigsaw.server
V1.4

This script allows that jigsaw runs as a system daemon (service), after
installation
of this script jigsaw is started and shut down at system startup and
shutdown.

Tested with Solaris 7 Sparc, but any Solaris >= 2.5.1 should work.

(It would be __really__ nice if someone tests if this script is
compatible with any
other Unix and make a report to me...)

----

Bye,
Roland

--
  __ .  . __
 (o.\ \/ /.o)  Roland Mainz                               C programmer
  \__\/\/__/   Roland.Mainz@informatik.med.uni-giessen.de MPEG specialist
  /O /==\ O\   gisburn@w-specht.rhein-ruhr.de             Sun&&Amiga programmer
 (;O/ \/ \O;)  TEL +49 (0) 2426901568  FAX +49 (0) 2426901569
#!/sbin/sh
#
# Copyright (c) 1999 by Roland Mainz (Roland.Mainz@informatik.med.uni-giessen.de)
# All rights reserved.
# /etc/init.d/jigsaw.server
# /etc/rc3.d/S10jigsaw.server (hard link to /etc/init.d/jigsaw.server)
# /etc/rc0.d/K39jigsaw.server (hard link to /etc/init.d/jigsaw.server)
#
#pragma ident	"@(#)jigsaw.server	1.4	99/05/03 IMI"
#
#######################################################
# version history
# V1.4 (03.05.1999): - added "save" option to save servers
#                    - "stop" option now waits until the "jigkill" background process returns
#                    - fixed delay in stop option (was "sleep 8" instead of "sleep 5"; bug introduced in V1.2)
#                    - fixed startup delay (should be 10 sec to see jigsaw's startup messages on console)
# V1.3 (28.04.1999): - changed CLASSPATH for new servlet archive /usr/local/java/jsdk2.1/servlet.jar
#                    - added SIGKILL shutdown method to force a "shutdown" of jigsaw service if SIGTERM did not work
#                    - added "restart_server" switch to make "stop" + "start" in one step.
#                      (I did not use the name "restart" because this may be reserved by another /etc/init.d/ script functionality...)
# V1.2             : - added "sleep 5" at startup to see servers startup messages before xdm/dtlogin hides this info...
# V1.1             : - initial release
#######################################################
# Install instructions:
# copy this script to /etc/init.d/jigsaw.server and make hard links 
# /etc/rc3.d/S10jigsaw.server and /etc/rc0.d/K39jigsaw.server to this script
# Set permissions to 700 (chmod 700 /etc/init.d/jigsaw.server), otherwise
# the admin server is visible to anyone !!
#######################################################
# User "modifyable" variables:
JIGHOME=/home/jigsaw
JIGHOST=gyros.informatik.med.uni-giessen.de
JIGUID=jigsaw
JIGGID=www

JIGADMINUSER=admin
JIGADMINPASSWD=all4apizza

# be carefull that this is in sync with the user classpath variables
CLASSPATH=/usr/local/java/sax1.0/sax.jar:/usr/local/java/javasoft-project-x/xml-tr1/xml.jar:/usr/local/java/ibmxml4j/xml4j_2_0_0/xml4j.jar:/usr/local/java/jsdk2.1/servlet.jar:/usr/local/java/javamail-1.1.1/mail.jar:/usr/local/java/jaf/activation.jar:/usr/java/lib/dt.jar:/usr/java/jre/lib/ext/iiimp.jar:/usr/java/jre/lib/i18n.jar:/usr/java/jre/lib/rt.jar
export CLASSPATH

## do not edit below this line !!
JIGBIN=${JIGHOME}/Jigsaw/Jigsaw/bin

# jigsaw installed on this system ?
[ ! -d "${JIGHOME}" ] && exit


# asserts
if [ ! -x ${JIGBIN}/jigsaw  ] ; then echo "${0}: no ${JIGBIN}/jigsaw"  ; exit 0 ; fi
if [ ! -x ${JIGBIN}/jigkill ] ; then echo "${0}: no ${JIGBIN}/jigkill" ; exit 0 ; fi


# Start/stop processes required for jigsaw WWW server
case "$1" in
'start')
    echo "jigsaw webserver\c"
    
    if [ -f /etc/jigsaw.pid ] ; then
        echo " already running."
        exit 0
    else
        # launch jigsaw web server
        ${JIGBIN}/jigsaw -host ${JIGHOST} -root ${JIGHOME}/Jigsaw/Jigsaw -user ${JIGUID} -group ${JIGGID} </dev/null >/dev/console 2>&1 &
    
        # store web-servers PID in /etc/jigsaw.pid
        echo $! >/etc/jigsaw.pid
      
        echo " started." 

        # give jigsaw a chance to print it's startup message to console
        sleep 10
 
        exit 0
    fi    
    ;;

'stop')   
    if [ -f /etc/jigsaw.pid ] ; then
        echo "Attempt to kill jigsaw web server\c"
        
        JIGPID=`cat /etc/jigsaw.pid`
        
        echo ".\c"
        ${JIGBIN}/jigkill -u ${JIGADMINUSER} -p ${JIGADMINPASSWD} --stop http://${JIGHOST}:8009/ >/dev/null &
        
        # time to wait for jigsaw to exit, after this fire a SIGTERM to the JVM
        TIMETOKILLJIG=48 # 4 min
        
        while [ "`ps -ef -o pid | grep ${JIGPID}`" != "" ] ; do 
            echo ".\c"
            sleep 5
            TIMETOKILLJIG=`expr ${TIMETOKILLJIG} - 1`
            
            # sometimes the JVM hangs; in this case (after TIMETOKILLJIG * 5 sec) send a SIGTERM...
            if [ ${TIMETOKILLJIG} -lt 1 ] ; then
                echo "(sending SIGTERM)\c"
                kill ${JIGPID}
            fi
            
            # same as above, but the unfriendly KILL method to FORCE a shutdown...
            if [ ${TIMETOKILLJIG} -lt -5 ] ; then
                echo "(sending SIGKILL)\c"
                kill -9 ${JIGPID}
                echo "######## jigsaw server was KILLED !!!"
            fi        
        done 
        
        # remove pid key
        rm /etc/jigsaw.pid
        
        echo " done\c"
        
        # wait for "jigkill" background process
        wait      
        
        echo "." 
    else
        echo "jigsaw web server not running."
    fi
    ;;
    
'restart_server')
    echo "jigsaw restart:"
    
      echo "stopping jigsaw..."
      ${0} stop
      
      echo "starting jigsaw..."
      ${0} start
      
    echo "restart done."
    ;; 
     
'save')
    if [ -f /etc/jigsaw.pid ] ; then
        # any details are printed from jigkill...
        ${JIGBIN}/jigkill -u ${JIGADMINUSER} -p ${JIGADMINPASSWD} --save http://${JIGHOST}:8009/ 
        
        echo "save done."
    else
        echo "jigsaw web server not running."
    fi
    ;;
    
*)
    echo "Usage: ${0} { start | stop | restart_server | save }"
    exit 1
    ;;
esac
exit 0

Received on Monday, 3 May 1999 22:22:30 UTC