blob: 0ba7ee139664d99aeffd95a7832cff222befbb4a [file] [log] [blame] [edit]
#!/bin/bash
#
# chkconfig: 345 90 10
# description: SLURMDBD is a database server interface for \
# SLURM (Simple Linux Utility for Resource Management).
#
# processname: @sbindir@/slurmdbd
# pidfile: /var/run/slurmdbd.pid
#
# config: /etc/sysconfig/slurm
#
### BEGIN INIT INFO
# Provides: slurmbd
# Required-Start: $remote_fs $syslog $network munge
# Required-Stop: $remote_fs $syslog $network munge
# Should-Start: $named
# Should-Stop: $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: SLURM database daemon
# Description: Start slurm to provide database server for SLURM
### END INIT INFO
CONFDIR="@sysconfdir@"
LIBDIR="@libdir@"
SBINDIR="@sbindir@"
#Source function library.
if [ -f /etc/rc.status ]; then
. /etc/rc.status
SUSE=1
STARTPROC=startproc
rc_reset
else
if [ ! -f /etc/rc.d/init.d/functions ]; then
echo "Could not find /etc/rc.d/init.d/functions. Is some other daemon launch mechanism used?"
exit 1
fi
. /etc/rc.d/init.d/functions
SUSE=0
STARTPROC=daemon
function rc_status() {
RETVAL=$?
}
function rc_exit () {
exit $RETVAL
}
RETVAL=0
fi
# We can not use a starter program without losing environment
# variables that are critical on Blue Gene systems
if [ -d /bgl/BlueLight/ppcfloor ]; then
STARTPROC=""
fi
# Source slurm specific configuration
# SLURMDBD_OPTIONS defines slurmdbd command line options. See "man slurmdbd"
if [ -f /etc/sysconfig/slurm ] ; then
. /etc/sysconfig/slurm
else
SLURMDBD_OPTIONS=""
fi
if [ ! -f $CONFDIR/slurmdbd.conf ]; then
echo "Could not find $CONFDIR/slurmdbd.conf. Bad path?"
exit 1
fi
# setup library paths for slurm and munge support
export LD_LIBRARY_PATH=$LIBDIR${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
start() {
prog=$1
shift
echo -n "starting $prog: "
unset HOME MAIL USER USERNAME
$STARTPROC $SBINDIR/$prog $SLURMDBD_OPTIONS
rc_status -v
echo
touch /var/lock/subsys/slurmdbd
}
stop() {
echo -n "stopping $1: "
killproc $1 -TERM
rc_status -v
echo
rm -f /var/lock/subsys/slurmdbd
}
slurmstatus() {
local base=${1##*/}
local pid
local rpid
local pidfile
pidfile=`grep -i pidfile $CONFDIR/slurmdbd.conf | grep -v '^ *#'`
if [ $? = 0 ]; then
pidfile=${pidfile##*=}
pidfile=${pidfile%#*}
pidfile=${pidfile//\"/}
else
pidfile=/var/run/slurmdbd.pid
fi
pid=`pidof -o $$ -o $$PPID -o %PPID -x $1 || \
pidof -o $$ -o $$PPID -o %PPID -x ${base}`
if [ -f $pidfile ]; then
read rpid < $pidfile
if [ "$rpid" != "" -a "$pid" != "" ]; then
for i in $pid ; do
if [ "$i" = "$rpid" ]; then
echo $"${base} (pid $pid) is running..."
return 0
fi
done
elif [ "$rpid" != "" -a "$pid" = "" ]; then
echo $"${base} dead but pid file exists"
return 1
fi
fi
if [ "$base" = "slurmdbd" -a "$pid" != "" ] ; then
echo $"${base} (pid $pid) is running..."
return 0
fi
echo $"${base} is stopped"
return 3
}
#
# stop slurm daemons,
# wait for termination to complete (up to 10 seconds) before returning
#
slurmstop() {
stop $1
for i in 1 2 3 4
do
sleep $i
slurmstatus $1
if [ $? != 0 ]; then
break
fi
done
}
#
# The pathname substitution in daemon command assumes prefix and
# exec_prefix are same. This is the default, unless the user requests
# otherwise.
#
# Any node can be a slurm controller and/or server.
#
case "$1" in
start)
start slurmdbd
;;
stop)
slurmstop slurmdbd
;;
status)
slurmstatus slurmdbd
rc_status -v
;;
restart)
$0 stop
$0 start
;;
condrestart)
if [ -f /var/lock/subsys/slurm ]; then
stop slurmdbd
start slurmdbd
fi
;;
reconfig|reload)
echo -n $"Reloading slurmdbd daemon configuration: "
killproc slurmdbd -HUP
echo
;;
*)
echo "Usage: $0 {start|stop|status|restart|condrestart|reconfig}"
exit 1
;;
esac
rc_exit