| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- #!/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
- . @datadir@/@package_name@/data/DSSharedLib
- # 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
- initfile=`get_init_file $initconfig_dir $SERV_ID` || { echo Instance $SERV_ID not found. ; return 1 ; }
- # source env. for this instance
- if [ -f $initfile ] ; then
- . $initfile
- else
- echo Instance $SERV_ID not found.
- return 1
- fi
- prefix="$DS_ROOT"
- libpath_add "$prefix$SERVER_DIR"
- libpath_add "$prefix@nss_libdir@"
- libpath_add "$prefix@libdir@"
- libpath_add "@nss_libdir@"
- libpath_add "$prefix@pcre_libdir@"
- export LD_LIBRARY_PATH
- SHLIB_PATH=$LD_LIBRARY_PATH
- 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 -s 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 -s 0 $PID > /dev/null 2>&1 ; then
- echo There is an ns-slapd running: $PID
- return 2;
- else
- rm -f $PIDFILE
- fi
- fi
- #
- # Use systemctl if available and running as root,
- # otherwise start the instance the old way.
- #
- if [ -d "@systemdsystemunitdir@" ] && [ $(id -u) -eq 0 ];then
- @bindir@/systemctl start @package_name@@$SERV_ID.service
- if [ $? -ne 0 ]; then
- return 1
- fi
- else
- $SERVERBIN_DIR/ns-slapd -D $CONFIG_DIR -i $PIDFILE -w $STARTPIDFILE "$@"
- if [ $? -ne 0 ]; then
- return 1
- fi
- 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 -s 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 [ -z "$initconfig_dir" ]; then
- initconfig_dir=@initconfigdir@
- fi
- found=0
- if [ $# -eq 0 ]; then
- # We're starting all instances.
- ret=0
- initfiles=`get_initconfig_files $initconfig_dir` || { echo No instances found in $initconfig_dir ; exit 1 ; }
- for i in $initfiles; do
- inst=`normalize_server_id $i`
- echo Starting instance \"$inst\"
- start_instance $inst
- rv=$?
- if [ $rv -ne 0 ]; then
- ret=$rv
- fi
- done
- exit $ret
- else
- # We're starting a single instance.
- start_instance $@
- exit $?
- fi
|