#!/sbin/runscript # Copyright 1999-2010 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/net-nds/389-ds-base/files/389-ds.initd,v 1.3 2010/11/12 12:26:37 lxnay Exp $ DIRSRV_EXEC="/usr/sbin/ns-slapd" PID_DIRECTORY="/run/dirsrv" LOCK_DIRECTORY="/run/lock/dirsrv" DIRSRV_CONF_DIR="/etc/dirsrv" DS_INSTANCES=${DIRSRV_CONF_DIR}/slapd-* F389DS_INSTANCES="" DIRSRV_USER="dirsrv" depend() { need net logger use dns provide dirsvr ldap } checkconfig() { if [ -z "${DS_INSTANCES}" ]; then eerror "389 Directory Server has not been configured." eend 1 return 1 fi } start() { checkconfig || return 1 for instance in ${DS_INSTANCES}; do instance=$(basename ${instance}) # skip .removed instances, bug #338133 if [ "${instance%%.removed}" != "${instance}" ]; then continue fi # Make sure PID_DIRECTORY exists [[ ! -d "${PID_DIRECTORY}" ]] && mkdir "${PID_DIRECTORY}" chown "${DIRSRV_USER}" "${PID_DIRECTORY}" # Make sure LOCK_DIRECTORY exists [[ ! -d "${LOCK_DIRECTORY}/${instance}" ]] && mkdir -p "${LOCK_DIRECTORY}/${instance}" chown "${DIRSRV_USER}" "${LOCK_DIRECTORY}/${instance}" ebegin "Starting 389 Directory Server: instance ${instance}" # Let dirsrv create the PID file, start-stop-daemon only gets the PID of the startup program start-stop-daemon --start --quiet \ --exec ${DIRSRV_EXEC} -- -D ${DIRSRV_CONF_DIR}/${instance} \ -i ${PID_DIRECTORY}/${instance}.pid sts=${?} eend ${sts} if [ "${sts}" != "0" ]; then return 1 fi done # Sleep some time to make sure, the 389 instances are up sleep 3 } stop() { checkconfig || return 1 for instance in ${DS_INSTANCES}; do instance=$(basename ${instance}) ebegin "Stopping 389 Directory Server: instance ${instance}" start-stop-daemon --stop --quiet \ --pidfile ${PID_DIRECTORY}/${instance}.pid \ --exec ${DIRSRV_EXEC} eend ${?} done } status() { for instance in ${DS_INSTANCES}; do instance=$(basename ${instance}) if [ -e ${PID_DIRECTORY}/${instance}.pid ]; then pid=$(cat ${PID_DIRECTORY}/${instance}.pid) if [ $(echo "$pid" | grep -c $pid) -ge 1 ]; then einfo "389 Directory Server: instance ${instance} (pid $pid) running." else ewarn "389 Directory Server: instance ${instance} (pid $pid) NOT running." fi else eerror "389 Directory Server: instance ${instance} is NOT running." fi done }