mirror of
https://github.com/valitydev/salt.git
synced 2024-11-07 08:58:59 +00:00
ed3166990c
On our RHEL5 systems we're getting 2 and sometimes 3 or more salt-minions started. Somehow the check on /var/run/salt-minion.pid doesn't prevent this. This patch stops the registered process and kills any further salt-minion processes, first trying -TERM and then -KILL signals. It may be that other distros would like to use this same logic to tidy up, in which case the new code can be moved into place as appropriate.
152 lines
3.6 KiB
Bash
Executable File
152 lines
3.6 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Salt minion
|
|
###################################
|
|
|
|
# LSB header
|
|
|
|
### BEGIN INIT INFO
|
|
# Provides: salt-minion
|
|
# Required-Start: $all
|
|
# Required-Stop:
|
|
# Default-Start: 2 3 4 5
|
|
# Default-Stop: 0 1 6
|
|
# Short-Description: Salt minion daemon
|
|
# Description: This is the Salt minion daemon that can be controlled by the
|
|
# Salt master.
|
|
### END INIT INFO
|
|
|
|
|
|
# chkconfig header
|
|
|
|
# chkconfig: 345 97 04
|
|
# description: This is the Salt minion daemon that can be controlled by the Salt master.
|
|
#
|
|
# processname: /usr/bin/salt-minion
|
|
|
|
|
|
DEBIAN_VERSION=/etc/debian_version
|
|
SUSE_RELEASE=/etc/SuSE-release
|
|
# Source function library.
|
|
if [ -f $DEBIAN_VERSION ]; then
|
|
break
|
|
elif [ -f $SUSE_RELEASE -a -r /etc/rc.status ]; then
|
|
. /etc/rc.status
|
|
else
|
|
. /etc/rc.d/init.d/functions
|
|
fi
|
|
|
|
# Default values (can be overridden below)
|
|
SALTMINION=/usr/bin/salt-minion
|
|
PYTHON=/usr/bin/python
|
|
MINION_ARGS=""
|
|
|
|
if [ -f /etc/default/salt ]; then
|
|
. /etc/default/salt
|
|
fi
|
|
|
|
SERVICE=salt-minion
|
|
PROCESS=salt-minion
|
|
|
|
RETVAL=0
|
|
|
|
start() {
|
|
echo -n $"Starting salt-minion daemon: "
|
|
if [ -f $SUSE_RELEASE ]; then
|
|
startproc -f -p /var/run/$SERVICE.pid $SALTMINION -d $MINION_ARGS
|
|
rc_status -v
|
|
elif [ -e $DEBIAN_VERSION ]; then
|
|
if [ -f $LOCKFILE ]; then
|
|
echo -n "already started, lock file found"
|
|
RETVAL=1
|
|
elif $PYTHON $SALTMINION -d $MINION_ARGS >& /dev/null; then
|
|
echo -n "OK"
|
|
RETVAL=0
|
|
fi
|
|
else
|
|
if [[ ! -z "$(pidofproc -p /var/run/$SERVICE.pid $PROCESS)" ]]; then
|
|
RETVAL=$?
|
|
echo -n "already running"
|
|
else
|
|
daemon --check $SERVICE $SALTMINION -d $MINION_ARGS
|
|
fi
|
|
fi
|
|
RETVAL=$?
|
|
echo
|
|
return $RETVAL
|
|
}
|
|
|
|
stop() {
|
|
echo -n $"Stopping salt-minion daemon: "
|
|
if [ -f $SUSE_RELEASE ]; then
|
|
killproc -TERM $SALTMINION
|
|
rc_status -v
|
|
RETVAL=$?
|
|
elif [ -f $DEBIAN_VERSION ]; then
|
|
# Added this since Debian's start-stop-daemon doesn't support spawned processes
|
|
if ps -ef | grep "$PYTHON $SALTMINION" | grep -v grep | awk '{print $2}' | xargs kill &> /dev/null; then
|
|
echo -n "OK"
|
|
RETVAL=0
|
|
else
|
|
echo -n "Daemon is not started"
|
|
RETVAL=1
|
|
fi
|
|
else
|
|
killproc $PROCESS
|
|
RETVAL=$?
|
|
# tidy up any rogue processes:
|
|
PROCS=`ps -ef | grep "$SALTMINION" | grep -v grep | awk '{print $2}'`
|
|
if [ -n "$PROCS" ]; then
|
|
kill $PROCS &> /dev/null
|
|
sleep 1
|
|
PROCS=`ps -ef | grep "$SALTMINION" | grep -v grep | awk '{print $2}'`
|
|
if [ -n "$PROCS" ]; then
|
|
kill -9 $PROCS &> /dev/null
|
|
fi
|
|
fi
|
|
fi
|
|
echo
|
|
}
|
|
|
|
restart() {
|
|
stop
|
|
start
|
|
}
|
|
|
|
# See how we were called.
|
|
case "$1" in
|
|
start|stop|restart)
|
|
$1
|
|
;;
|
|
status)
|
|
if [ -f $SUSE_RELEASE ]; then
|
|
echo -n "Checking for service salt-minion "
|
|
checkproc $SALTMINION
|
|
rc_status -v
|
|
elif [ -f $DEBIAN_VERSION ]; then
|
|
if [ -f $LOCKFILE ]; then
|
|
RETVAL=0
|
|
echo "salt-minion is running."
|
|
else
|
|
RETVAL=1
|
|
echo "salt-minion is stopped."
|
|
fi
|
|
else
|
|
status $PROCESS
|
|
RETVAL=$?
|
|
fi
|
|
;;
|
|
condrestart)
|
|
[ -f $LOCKFILE ] && restart || :
|
|
;;
|
|
reload)
|
|
echo "can't reload configuration, you have to restart it"
|
|
RETVAL=$?
|
|
;;
|
|
*)
|
|
echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
exit $RETVAL
|