check_webservice_load.sh: added support for mysql systemd service file.

This commit is contained in:
Christoph 2018-01-08 21:20:06 +01:00
parent e9fdd42ce6
commit 569cde854e

View File

@ -141,12 +141,51 @@ if $check_mysql ; then
fi
fi
MYSQLD_SAFE=`realpath $(which mysqld_safe) 2>/dev/null`
if [ -z "$MYSQLD_SAFE" ]; then
if [ -x "/usr/local/mysql/bin/mysqld_safe" ]; then
MYSQLD_SAFE=`realpath "/usr/local/mysql/bin/mysqld_safe"`
else
fatal 'Command \"mysqld_safe\" not found!'
MYSQL_INIT_SCRIPT=""
MYSQLD_SERVICE_FILE=""
if $systemd_supported ; then
# - Is Service exclusive controlled by systemd
# -
if systemctl -t service list-unit-files \
| grep -e "^mysql" \
| grep -q enabled 2> /devnull ; then
MYSQLD_SERVICE_FILE=$(systemctl -t service list-unit-files \
| grep -e "^mysql" \
| awk '{print$1}')
fi
fi
if [[ -z "$MYSQLD_SERVICE_FILE" ]] ; then
if [ -x "$(realpath /etc/init.d/mysql.server)" ]; then
MYSQL_INIT_SCRIPT="/etc/init.d/mysql.server"
elif [ -x "$(realpath /etc/init.d/mysql)" ]; then
MYSQL_INIT_SCRIPT="/etc/init.d/mysql"
fi
fi
if [[ -z "$MYSQL_INIT_SCRIPT" ]] && [[ -z "$MYSQLD_SERVICE_FILE" ]]; then
fatal 'Neither an init-script nor a service file for MySQL found!'
elif [[ -n "$MYSQL_INIT_SCRIPT" ]] ; then
MYSQL_PS_CHECK_STRING="$(dirname "$MYSQLD")/(mysqld_safe |$(basename "$MYSQLD") )"
#MYSQL_PS_CHECK_STRING="(bin/mysqld_safe |bin/mysqld )"
else
MYSQL_PS_CHECK_STRING="$MYSQLD"
fi
if [[ -z "$MYSQL_PS_CHECK_STRING" ]]; then
fatal "Cannot determin a check string for output of command 'ps ax'"
fi
if [[ -n "$MYSQL_INIT_SCRIPT" ]] ; then
MYSQLD_SAFE=`realpath $(which mysqld_safe) 2>/dev/null`
if [ -z "$MYSQLD_SAFE" ]; then
if [ -x "/usr/local/mysql/bin/mysqld_safe" ]; then
MYSQLD_SAFE=`realpath "/usr/local/mysql/bin/mysqld_safe"`
else
fatal 'Command \"mysqld_safe\" not found!'
fi
fi
fi
@ -159,15 +198,6 @@ if $check_mysql ; then
fi
fi
MYSQL_INIT_SCRIPT=""
if [ -x "/etc/init.d/mysql.server" ]; then
MYSQL_INIT_SCRIPT="/etc/init.d/mysql.server"
elif [ -x "/etc/init.d/mysql" ]; then
MYSQL_INIT_SCRIPT="/etc/init.d/mysql"
else
fatal 'Cannot find init-script for MySQL server!'
fi
fi
if $check_apache ; then
@ -437,14 +467,18 @@ stop_mysql() {
## - Stop MySQL Service
## -
$MYSQL_INIT_SCRIPT stop > /dev/null 2>&1
if [[ -n "$MYSQL_INIT_SCRIPT" ]]; then
$MYSQL_INIT_SCRIPT stop > /dev/null 2>&1
else
systemctl stop "$MYSQLD_SERVICE_FILE" > /dev/null 2>&1
fi
_msg=false
sleep 2
sleep 5
declare -i i=0
PIDS=$(ps aux | grep "$MYSQLD_SAFE" | grep -v grep | awk '{print$2}')
PIDS="$(ps aux | grep -E "${MYSQL_PS_CHECK_STRING}" | grep -v grep | awk '{print$2}')"
while [ "X$PIDS" != "X" ]; do
if [ $i -eq 0 ]; then
@ -458,13 +492,13 @@ stop_mysql() {
info "Going to kill MySQL Processes (mysqld_safe).."
fi
if [ $i -gt 20 ]; then
if [ $i -gt 10 ]; then
echo "" >> $LOCK_DIR/extra_msg.txt
echo -e "\t[ Error ]: Killing MySQL Processes (mysqld_safe) failed !!!" >> $LOCK_DIR/extra_msg.txt
echo -e "\t[ Error ]: Killing MySQL Processes failed !!!" >> $LOCK_DIR/extra_msg.txt
echo "" >> $LOCK_DIR/extra_msg.txt
error "Killing MySQL Processes (mysqld_safe) failed !!!"
error "Killing MySQL Processes failed !!!"
_msg=true
@ -472,52 +506,15 @@ stop_mysql() {
fi
for _PID in $PIDS ; do
kill -9 $_PID > /dev/null 2>&1
kill -15 $_PID > /dev/null 2>&1
done
sleep 2
sleep 5
PIDS=$(ps aux | grep "$MYSQLD_SAFE" | grep -v grep | awk '{print$2}')
PIDS="$(ps aux | grep -E "${MYSQL_PS_CHECK_STRING}" | grep -v grep | awk '{print$2}')"
i=i+1
done
PIDS=$(ps aux | grep "$MYSQLD" | grep -v grep | awk '{print$2}')
declare -i i=0
while [ "X$PIDS" != "X" ]; do
if [ $i -eq 0 ]; then
echo "" >> $LOCK_DIR/extra_msg.txt
echo -e "\t[ Error ]: MySQL Processes (mysqld) still exists !!!" >> $LOCK_DIR/extra_msg.txt
echo "" >> $LOCK_DIR/extra_msg.txt
echo -e "\t[ Info ]; Going to kill remaining MySQL Processes (mysqld).." >> $LOCK_DIR/extra_msg.txt
echo "" >> $LOCK_DIR/extra_msg.txt
error "MySQL Processes (mysqld) still exists !!!"
info "Going to kill remaining MySQL Processes (mysqld).."
fi
if [ $i -gt 20 ]; then
echo "" >> $LOCK_DIR/extra_msg.txt
echo -e "\t[ Error ]: Killing remaining MySQL Processes (mysqld) failed !!!" >> $LOCK_DIR/extra_msg.txt
echo "" >> $LOCK_DIR/extra_msg.txt
error "Killing remaining MySQL Processes (mysqld) failed !!!"
_msg=true
break
fi
for _PID in $PIDS ; do
kill -9 $_PID > /dev/null 2>&1
done
sleep 2
PIDS=$(ps aux | grep "$MYSQLD" | grep -v grep | awk '{print$2}')
i=i+1
done
if $send_msg && $_msg ; then
subject="[ Error ]: Stopping MySQL Engine on `hostname -f` failed -- $datum"
msg="\n\n`cat $LOCK_DIR/extra_msg.txt`\n"
@ -651,15 +648,16 @@ start_mysql() {
send_msg=$1
send_msg=${send_msg:=true}
$MYSQL_INIT_SCRIPT start > /dev/null 2>&1
sleep 2
NEWPID=$(ps aux | grep "$MYSQLD_SAFE" | grep -v grep | grep root | awk '{print$2}')
if [[ -z "$NEWPID" ]]; then
NEWPID=$(ps aux | grep "$MYSQLD" | grep -v grep | awk '{print$2}')
if [[ -n "$MYSQL_INIT_SCRIPT" ]]; then
$MYSQL_INIT_SCRIPT start > /dev/null 2>&1
else
systemctl start "$MYSQLD_SERVICE_FILE" > /dev/null 2>&1
fi
sleep 5
NEWPID="$(ps aux | grep -E "${MYSQL_PS_CHECK_STRING}" | grep -v grep | awk '{print$2}' | head -1) "
if [ "X${NEWPID}X" = "XX" ]; then
echo "" >> $LOCK_DIR/extra_msg.txt
@ -1086,11 +1084,7 @@ if $check_mysql ; then
echo -e "\nChecking Mysql databse service on \"`hostname -f`\".."
fi
PID=`ps aux | grep "$MYSQLD_SAFE" | grep -v grep | awk '{print$2}'`
if [[ -z "$PID" ]] ; then
PID=`ps aux | grep "$MYSQLD" | grep -v grep | awk '{print$2}'`
fi
PID="$(ps aux | grep -E "${MYSQL_PS_CHECK_STRING}" | grep -v grep | awk '{print$2}')"
if [ "X${PID}X" = "XX" ];then