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 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234
|
#!/bin/sh
#
# chkconfig: 345 90 10
# description: SLURM is a simple resource management system which \
# manages exclusive access o a set of compute \
# resources and distributes work to those resources.
#
# processname: /usr/sbin/slurmd
# pidfile: /run/slurmd.pid
#
# config: /etc/default/slurmd
#
### BEGIN INIT INFO
# Provides: slurmd
# 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 daemon management
# Description: Start slurm to provide resource management
### END INIT INFO
BINDIR=/usr/bin
CONFDIR=/etc/slurm
LIBDIR=/usr/lib
SBINDIR=/usr/sbin
# Source slurm specific configuration
if [ -f /etc/default/slurmd ] ; then
. /etc/default/slurmd
else
SLURMD_OPTIONS=""
fi
# Checking for slurm.conf presence
if [ ! -f $CONFDIR/slurm.conf ] ; then
if [ -n "$(echo $1 | grep start)" ] ; then
echo Not starting slurmd
fi
echo slurm.conf was not found in $CONFDIR
echo Please follow the instructions in \
/usr/share/doc/slurmd/README.Debian
exit 0
fi
DAEMONLIST="slurmd"
test -f $SBINDIR/slurmd || exit 0
#Checking for lsb init function
if [ -f /lib/lsb/init-functions ] ; then
. /lib/lsb/init-functions
else
echo Can\'t find lsb init functions
exit 1
fi
# setup library paths for slurm and munge support
export LD_LIBRARY_PATH=$LIBDIR${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
get_daemon_description()
{
case $1 in
slurmd)
echo slurm compute node daemon
;;
slurmctld)
echo slurm central management daemon
;;
*)
echo slurm daemon
;;
esac
}
start() {
desc="$(get_daemon_description $1)"
log_daemon_msg "Starting $desc" "$1"
unset HOME MAIL USER USERNAME
#FIXME $STARTPROC $SBINDIR/$1 $2
STARTERRORMSG="$(start-stop-daemon --start --oknodo \
--exec "$SBINDIR/$1" -- $2 2>&1)"
STATUS=$?
log_end_msg $STATUS
if [ "$STARTERRORMSG" != "" ] ; then
echo $STARTERRORMSG
fi
touch /var/lock/slurm
}
stop() {
desc="$(get_daemon_description $1)"
log_daemon_msg "Stopping $desc" "$1"
STOPERRORMSG="$(start-stop-daemon --oknodo --stop -s TERM \
--exec "$SBINDIR/$1" 2>&1)"
STATUS=$?
log_end_msg $STATUS
if [ "$STOPERRORMSG" != "" ] ; then
echo $STOPERRORMSG
fi
rm -f /var/lock/slurm
}
getpidfile() {
dpidfile=`grep -i ${1}pid $CONFDIR/slurm.conf | grep -v '^ *#'`
if [ $? = 0 ]; then
dpidfile=${dpidfile##*=}
dpidfile=${dpidfile%#*}
else
dpidfile=/var/run/${1}.pid
fi
echo $dpidfile
}
#
# status() with slight modifications to take into account
# instantiations of job manager slurmd's, which should not be
# counted as "running"
#
slurmstatus() {
base=${1##*/}
pidfile=$(getpidfile $base)
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
# Due to change in user id, pid file may persist
# after slurmctld terminates
if [ "$base" != "slurmctld" ] ; then
echo "${base} dead but pid file exists"
fi
return 1
fi
fi
if [ "$base" = "slurmctld" -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() {
for prog in $DAEMONLIST ; do
stop $prog
for i in 1 2 3 4
do
sleep $i
slurmstatus $prog
if [ $? != 0 ]; then
break
fi
done
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 slurmd "$SLURMD_OPTIONS"
;;
startclean)
SLURMD_OPTIONS="-c $SLURMD_OPTIONS"
start slurmd "$SLURMD_OPTIONS"
;;
stop)
slurmstop
;;
status)
for prog in $DAEMONLIST ; do
slurmstatus $prog
done
;;
restart)
$0 stop
$0 start
;;
force-reload)
$0 stop
$0 start
;;
condrestart)
if [ -f /var/lock/subsys/slurm ]; then
for prog in $DAEMONLIST ; do
stop $prog
start $prog
done
fi
;;
reconfig)
for prog in $DAEMONLIST ; do
PIDFILE=$(getpidfile $prog)
start-stop-daemon --stop --signal HUP --pidfile \
"$PIDFILE" --quiet $prog
done
;;
test)
for prog in $DAEMONLIST ; do
echo "$prog runs here"
done
;;
*)
echo "Usage: $0 {start|startclean|stop|status|restart|reconfig|condrestart|test}"
exit 1
;;
esac
|