If we want one in the repo I'm happy to dump the one I use (based on
previous ones I've seen on the list) see attached.

It does more than just start/stop script since I use it to manage the
reporter, sip, z39.50 and autogen. It's a big mash up and any
cleanup/improvements would be appreciated.

Remember to make sure to set apache in rc*.d to run after the evergreen
script and to shutdown before the evergreen init script. I used
update-rc.d to add/change the start order.

Dan Scott wrote:
> On Fri, 2010-04-30 at 11:16 +0200, Luca Iacono wrote:
>> Hello Evergreen community
>>
>> Before embarking on writing a startup script for Evergreen, I wanted to 
>> ask you whether it's a feaseable task.  Since I didn't find one, I 
>> thought I'd better ask.
> 
> There have been some efforts towards this end in the past
> (http://markmail.org/search/?q=evergreen+init+script) that you might be
> able to build on, rather than having to start from scratch. So far
> nothing has made its way into the Evergreen repository (even
> the /examples directory), for whatever reason, but there's always
> hope :)
> 
> 

-- 

- - - - - - - - - - - - - - - - - - - - - - - - -

Anoop Atre
IS Developer & Integrator, MnPALS
PH: 507.389.5060
OF: 3022 Memorial Library (Office-ML 3022)
--
"Freiheit ist immer Freiheit der Andersdenkenden"
 ~ Rosa Luxemburg
"Mit der Dummheit kämpfen Götter selbst vergebens"
 ~ Johann Christoph Friedrich von Schiller
#!/bin/bash

OPENILS_BASE="/openils"
OPENILS_CORE="${OPENILS_BASE}/conf/opensrf_core.xml"
SRU_LOG="${OPENILS_BASE}/var/log/sru.log"

SIP_PID="${OPENILS_BASE}/var/run"
SIP_CONF="${OPENILS_BASE}/conf/oils_sip.xml"

REP_LOCK="${OPENILS_BASE}/var/lock/reporter-LOCK"
REP_NAME="Clark Kent, waiting for trouble"

sru_name='simple2zoom'

if [ $(whoami) != 'opensrf' ]; then
 PERL5LIB='/openils/lib/perl5:$PERL5LIB';
fi;

start() {
        echo "Starting Evergreen"
        sudo -u opensrf /bin/bash -c 
"PERL5LIB=${PERL5LIB}:${OPENILS_BASE}/lib/perl5 
PATH=${PATH}:${OPENILS_BASE}/bin osrf_ctl.sh -l -a start_all"
}

stop() {
        echo "Stopping Evergreen"
        sudo -u opensrf /bin/bash -c 
"PERL5LIB=${PERL5LIB}:${OPENILS_BASE}/lib/perl5 
PATH=${PATH}:${OPENILS_BASE}/bin osrf_ctl.sh -l -a stop_all"
}

autogen() {
        echo "Running Autogen Update"
        sudo -u opensrf /bin/bash -c 
"PERL5LIB=${PERL5LIB}:${OPENILS_BASE}/lib/perl5 
PATH=${PATH}:${OPENILS_BASE}/bin autogen.sh -u -c ${OPENILS_CORE}"
}

sip_start() {
        sudo -u opensrf /bin/bash -c 
"PERL5LIB=${PERL5LIB}:${OPENILS_BASE}/lib/perl5 
PATH=${PATH}:${OPENILS_BASE}/bin oils_ctl.sh \
                                                                                
                                     -d ${SIP_PID} \
                                                                                
                                     -s ${SIP_CONF} \
                                                                                
                                     -a start_sip"
}

sip_stop() {
        sudo -u opensrf /bin/bash -c 
"PERL5LIB=${PERL5LIB}:${OPENILS_BASE}/lib/perl5 
PATH=${PATH}:${OPENILS_BASE}/bin oils_ctl.sh \
                                                                                
                                     -d ${SIP_PID} \
                                                                                
                                     -s ${SIP_CONF} \
                                                                                
                                     -a stop_sip"
}

sip_restart() {
        sudo -u opensrf /bin/bash -c 
"PERL5LIB=${PERL5LIB}:${OPENILS_BASE}/lib/perl5 
PATH=${PATH}:${OPENILS_BASE}/bin oils_ctl.sh \
                                                                                
                                     -d ${SIP_PID} \
                                                                                
                                     -s ${SIP_CONF} \
                                                                                
                                     -a restart_sip"
}

start_rep() {
        pids="$(pidof "$REP_NAME")"
        if [ ! x"$pids" = x ] ; then
          echo FAILURE ; echo $"Starting Reporting: already running as $pids" 
          return 1
        fi
        rm -f $REP_LOCK
        sudo -u opensrf bash -c "PERL5LIB=${PERL5LIB}:${OPENILS_BASE}/lib/perl5 
PATH=${PATH}:${OPENILS_BASE}/bin clark-kent.pl \
                                                           
--lockfile=${REP_LOCK} --boostrap=${OPENILS_CORE} --concurrency=1 --sleep=30 
--daemon" ;
        pids="$(pidof "$REP_NAME")"
        if [ x"$pids" = x ] ; then
          echo FAILURE 
        else 
          echo OK
        fi
        echo "Starting Reporting: $pids" 
        return $RETVAL
}

stop_rep() {
        pids="$(pidof "$REP_NAME")"
        if [ x"$pids" = x ] ; then
          echo FAILURE ; echo $"Stopping Reporting: not running" ; RETVAL=1
        else 
          kill $pids ; RETVAL=$?
          if [ $RETVAL ] ; then
            echo OK ; echo $"Stopping Reporting: $pids"
          else
            echo FAILURE 
          fi
        fi
        rm -f $REP_LOCK
        return $RETVAL
}

z39_50_start() {
        pids=`ps -eo pid,args | grep $sru_name | grep -v grep | cut -c1-6`
        if [ ! x"$pids" = x ] ; then
          echo FAILURE ; echo $"Starting Z39.50/SRU: already running as $pids" 
          return 1
        fi
        sudo -u opensrf bash -c "touch ${SRU_LOG}"
        sudo bash -c "PERL5LIB=${PERL5LIB}:${OPENILS_BASE}/lib/perl5 
PATH=${PATH}:${OPENILS_BASE}/bin z39_50.sh >> ${SRU_LOG} 2>&1" &
        sleep 1
        pids=`ps -eo pid,args | grep $sru_name | grep -v grep | cut -c1-6`
        if [ x"$pids" = x ] ; then
          echo FAILURE 
        else 
          echo OK
        fi
        echo "Starting Z39.50/SRU: $pids" 
        return $RETVAL
}

z39_50_stop() {
        pids=`ps -eo pid,args | grep $sru_name | grep -v grep | cut -c1-6`
        if [ x"$pids" = x ] ; then
          echo FAILURE ; echo $"Stopping Z39.50/SRU: not running" ; RETVAL=1
        else 
          kill $pids ; RETVAL=$?
          if [ $RETVAL ] ; then
            echo OK ; echo $"Stopping Z39.50/SRU: $pids"
          else
            echo FAILURE 
          fi
        fi
        return $RETVAL
}

case "$1" in
    start)
        start
        start_rep
        z39_50_start
        sip_start
    ;;
    stop)
        sip_stop
        z39_50_stop
        stop_rep
        stop
    ;;
    restart)
        echo "Restarting Evergreen, Reporter and Z39.50 Processes"
        sip_stop
        z39_50_stop
        stop_rep
        stop
        start
        start_rep
        z39_50_start
        sip_start
    ;;
    autogen)
        autogen
    ;;
    sip_start)
        sip_start
    ;;
    sip_stop)
        sip_stop
    ;;
    sip_restart)
        sip_restart
    ;;
    start_reporter)
        start_rep
    ;;
    stop_reporter)
        stop_rep
    ;;
    restart_reporter)
        stop_rep
        start_rep
    ;;
    z39_50_start)
        z39_50_start
    ;;
    z39_50_stop)
        z39_50_stop
    ;;
    z39_50_restart)
        z39_50_stop
        z39_50_start
    ;;
    start_router|stop_router|restart_router|start_perl|stop_perl|restart_perl| \
    
start_c|stop_c|restart_c|start_osrf|stop_osrf|restart_osrf|stop_all|start_all|restart_all)
        sudo -u opensrf /bin/bash -c 
"PERL5LIB=${PERL5LIB}:${OPENILS_BASE}/lib/perl5 
PATH=${PATH}:${OPENILS_BASE}/bin osrf_ctl.sh -l -a $1"
    ;;
    *)
        echo " * Usage: /etc/init.d/evergreen {start|stop|restart|autogen"
        echo "                                 |sip_start|sip_stop|sip_restart"
        echo "                                 
|z39_50_start|z39_50_stop|z39_50_restart"
        echo "                                 
|start_reporter|stop_reporter|restart_reporter"
        echo "                                 
|start_router|stop_router|restart_router|start_perl|stop_perl|restart_perl"
        echo "                                 
|start_c|stop_c|restart_c|start_osrf|stop_osrf|restart_osrf|stop_all|start_all|restart_all}"
        exit 1
    ;;
esac;

Reply via email to