/usr/sbin/stop-dirsrv is in 389-ds-base 1.3.3.5-4.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | #!/bin/bash
# Script that stops the ns-slapd server.
# Exit status can be:
# 0: Server stopped successfully
# 1: Server could not be stopped
# 2: Server was not running
source /usr/share/dirsrv/data/DSSharedLib
stop_instance() {
SERV_ID=$1
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
PIDFILE=$RUN_DIR/$PRODUCT_NAME-$SERV_ID.pid
if test ! -f $PIDFILE ; then
echo No ns-slapd PID file found. Server is probably not running
return 2
fi
PID=`cat $PIDFILE`
# see if the server is already stopped
kill -0 $PID > /dev/null 2>&1 || {
echo Server not running
if test -f $PIDFILE ; then
rm -f $PIDFILE
fi
return 2
}
#
# use systemctl if running as root
#
if [ -d "/lib/systemd/system" ] && [ "$(id -u)" == "0" ];then
#
# Now, check if systemctl is aware of this running instance
#
/usr/bin/systemctl is-active dirsrv@$SERV_ID.service > /dev/null 2>&1
if [ $? -eq 0 ]; then
#
# systemctl sees the running process, so stop it correctly
#
/usr/bin/systemctl stop dirsrv@$SERV_ID.service
else
#
# Have to kill it since systemctl doesn't think it's running
#
kill $PID
fi
else
# server is running - kill it
kill $PID
fi
# wait for 10 minutes (600 times 1 second)
loop_counter=1
max_count=600
while test $loop_counter -le $max_count; do
loop_counter=`expr $loop_counter + 1`
if kill -0 $PID > /dev/null 2>&1 ; then
sleep 1;
else
if test -f $PIDFILE ; then
rm -f $PIDFILE
fi
return 0
fi
done
if test -f $PIDFILE ; then
echo Server still running!! Failed to stop the ns-slapd process: $PID. Please check the errors log for problems.
fi
return 1
}
while getopts "d:" flag
do
case "$flag" in
d) initconfig_dir="$OPTARG";;
esac
done
shift $(($OPTIND-1))
if [ "$initconfig_dir" = "" ]; then
initconfig_dir=/etc/default
fi
if [ "$#" -eq 0 ]; then
# We're stopping all instances.
ret=0
initfiles=`get_initconfig_files $initconfig_dir` || { echo No instances found in $initconfig_dir ; exit 1 ; }
for i in $initfiles; do
if [ ! -f "$i" ] ; then
echo No instances found in $initconfig_dir
exit 1
fi
inst=`normalize_server_id $i`
echo Stopping instance \"$inst\"
stop_instance $inst
rv=$?
if [ "$rv" -ne 0 ]; then
ret=$rv
fi
done
exit $ret
else
# We're stopping a single instance.
stop_instance $@
exit $?
fi
|