#!/bin/sh # Script that starts the ns-slapd server. # Exit status can be: # 0: Server started successfully # 1: Server could not be started # 2: Server already running # Starts a single instance start_instance() { # The first argument is the server ID. Anything # after that is an argument to ns-slapd. SERV_ID=$1 shift # source env. for this instance if [ -f $initconfig_dir/@package_name@-$SERV_ID ] ; then . $initconfig_dir/@package_name@-$SERV_ID else echo Instance $SERV_ID not found. return 1 fi prefix="$DS_ROOT" LD_LIBRARY_PATH=$prefix$SERVER_DIR:$prefix@nss_libdir@:$prefix@libdir@:@nss_libdir@:@pcre_libdir@ export LD_LIBRARY_PATH SHLIB_PATH=$prefix$SERVER_DIR:$prefix@nss_libdir@:$prefix@libdir@:@nss_libdir@:@pcre_libdir@ export SHLIB_PATH DS_CONFIG_DIR=$CONFIG_DIR export DS_CONFIG_DIR PIDFILE=$RUN_DIR/$PRODUCT_NAME-$SERV_ID.pid STARTPIDFILE=$RUN_DIR/$PRODUCT_NAME-$SERV_ID.startpid if test -f $STARTPIDFILE ; then PID=`cat $STARTPIDFILE` if kill -0 $PID > /dev/null 2>&1 ; then echo There is an ns-slapd process already running: $PID return 2; else rm -f $STARTPIDFILE fi fi if test -f $PIDFILE ; then PID=`cat $PIDFILE` if kill -0 $PID > /dev/null 2>&1 ; then echo There is an ns-slapd running: $PID return 2; else rm -f $PIDFILE fi fi cd $SERVERBIN_DIR; ./ns-slapd -D $CONFIG_DIR -i $PIDFILE -w $STARTPIDFILE "$@" if [ $? -ne 0 ]; then return 1 fi loop_counter=1 # wait for 10 seconds for the start pid file to appear max_count=${STARTPID_TIME:-10} while test $loop_counter -le $max_count; do loop_counter=`expr $loop_counter + 1` if test ! -f $STARTPIDFILE ; then sleep 1; else PID=`cat $STARTPIDFILE` fi done if test ! -f $STARTPIDFILE ; then echo Server failed to start !!! Please check errors log for problems return 1 fi loop_counter=1 # wait for 10 minutes (600 times 1 seconds) max_count=${PID_TIME:-600} while test $loop_counter -le $max_count; do loop_counter=`expr $loop_counter + 1` if test ! -f $PIDFILE ; then if kill -0 $PID > /dev/null 2>&1 ; then sleep 1 else echo Server failed to start !!! Please check errors log for problems return 1 fi else PID=`cat $PIDFILE` rm -f $STARTPIDFILE return 0; fi done echo Server not running!! Failed to start ns-slapd process. Please check the errors log for problems. return 1 } # source env. for all instances [ -f @initconfigdir@/@package_name@ ] && . @initconfigdir@/@package_name@ while getopts "d:" flag do case "$flag" in d) initconfig_dir="$OPTARG";; esac done shift $(($OPTIND-1)) if [ "$initconfig_dir" = "" ]; then if [ $USER = root ] ; then initconfig_dir=@initconfigdir@ else initconfig_dir=$HOME/.@package_name@ fi fi if [ "$#" -eq 0 ]; then # We're starting all instances. ret=0 for i in $initconfig_dir/@package_name@-*; do regex=s,$initconfig_dir/@package_name@-,,g inst=`echo $i | sed -e $regex` echo Starting instance \"$inst\" start_instance $inst if [ "$?" -ne 0 ]; then ret=$? fi done exit $ret else # We're starting a single instance. start_instance $@ exit $? fi