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
fi fi
MYSQLD_SAFE=`realpath $(which mysqld_safe) 2>/dev/null` MYSQL_INIT_SCRIPT=""
if [ -z "$MYSQLD_SAFE" ]; then MYSQLD_SERVICE_FILE=""
if [ -x "/usr/local/mysql/bin/mysqld_safe" ]; then if $systemd_supported ; then
MYSQLD_SAFE=`realpath "/usr/local/mysql/bin/mysqld_safe"` # - Is Service exclusive controlled by systemd
else # -
fatal 'Command \"mysqld_safe\" not found!' 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
fi fi
@ -159,15 +198,6 @@ if $check_mysql ; then
fi fi
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 fi
if $check_apache ; then if $check_apache ; then
@ -437,14 +467,18 @@ stop_mysql() {
## - Stop MySQL Service ## - 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 _msg=false
sleep 2 sleep 5
declare -i i=0 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 while [ "X$PIDS" != "X" ]; do
if [ $i -eq 0 ]; then if [ $i -eq 0 ]; then
@ -458,13 +492,13 @@ stop_mysql() {
info "Going to kill MySQL Processes (mysqld_safe).." info "Going to kill MySQL Processes (mysqld_safe).."
fi fi
if [ $i -gt 20 ]; then if [ $i -gt 10 ]; then
echo "" >> $LOCK_DIR/extra_msg.txt 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 echo "" >> $LOCK_DIR/extra_msg.txt
error "Killing MySQL Processes (mysqld_safe) failed !!!" error "Killing MySQL Processes failed !!!"
_msg=true _msg=true
@ -472,52 +506,15 @@ stop_mysql() {
fi fi
for _PID in $PIDS ; do for _PID in $PIDS ; do
kill -9 $_PID > /dev/null 2>&1 kill -15 $_PID > /dev/null 2>&1
done 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 i=i+1
done 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 if $send_msg && $_msg ; then
subject="[ Error ]: Stopping MySQL Engine on `hostname -f` failed -- $datum" subject="[ Error ]: Stopping MySQL Engine on `hostname -f` failed -- $datum"
msg="\n\n`cat $LOCK_DIR/extra_msg.txt`\n" msg="\n\n`cat $LOCK_DIR/extra_msg.txt`\n"
@ -651,15 +648,16 @@ start_mysql() {
send_msg=$1 send_msg=$1
send_msg=${send_msg:=true} send_msg=${send_msg:=true}
$MYSQL_INIT_SCRIPT start > /dev/null 2>&1 if [[ -n "$MYSQL_INIT_SCRIPT" ]]; then
sleep 2 $MYSQL_INIT_SCRIPT start > /dev/null 2>&1
else
NEWPID=$(ps aux | grep "$MYSQLD_SAFE" | grep -v grep | grep root | awk '{print$2}') systemctl start "$MYSQLD_SERVICE_FILE" > /dev/null 2>&1
if [[ -z "$NEWPID" ]]; then
NEWPID=$(ps aux | grep "$MYSQLD" | grep -v grep | awk '{print$2}')
fi 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 if [ "X${NEWPID}X" = "XX" ]; then
echo "" >> $LOCK_DIR/extra_msg.txt echo "" >> $LOCK_DIR/extra_msg.txt
@ -1086,11 +1084,7 @@ if $check_mysql ; then
echo -e "\nChecking Mysql databse service on \"`hostname -f`\".." echo -e "\nChecking Mysql databse service on \"`hostname -f`\".."
fi fi
PID=`ps aux | grep "$MYSQLD_SAFE" | grep -v grep | awk '{print$2}'` PID="$(ps aux | grep -E "${MYSQL_PS_CHECK_STRING}" | grep -v grep | awk '{print$2}')"
if [[ -z "$PID" ]] ; then
PID=`ps aux | grep "$MYSQLD" | grep -v grep | awk '{print$2}'`
fi
if [ "X${PID}X" = "XX" ];then if [ "X${PID}X" = "XX" ];then