-
-
Save mheadd/5571023 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
UP=$(pgrep mysql | wc -l); | |
if [ "$UP" -ne 1 ]; | |
then | |
echo "MySQL is down."; | |
sudo service mysql start | |
else | |
echo "All is well."; | |
fi |
The original script does not work on my system. MySql runs 2 processes, so UP gets set to 2 and it thinks the service is not running.
Simply checking the error code from service status works.
This is on Debian.
If you are using Redhat (RHEL)/Fedora/CentOS
#!/bin/bash
/etc/init.d/mysqld status | grep 'running' > /dev/null 2>&1
if [ $? != 0 ]
then
sudo /etc/init.d/mysqld restart
fi
Don't forget to give the file executable permission sudo chmod +x monitor.sh
For me, i used this:
#!/bin/bash
email='[email protected]'
subject='mysql process down and up'
MYSQL_START='sudo service mysql start'
MYSQL='mysqld'
PGREP='/usr/bin/pgrep'
#check pid
$PGREP $MYSQL
if [ $? -ne 0 ]; then
$MYSQL_START | mail -s "$subject" $email <<< 'MySQL service was down and successfully started'
fi
and then
*/5 * * * * /home/user/scripts/mysql_check.sh > /dev/null 2>&1
Start mysq if not started
UP=$(pgrep mysql | wc -l);
if [ "$UP" -le 1 ];
then
echo "Iniciando mysql...";
sudo service mysql start
else
echo "Mysql online.";
fi
One line cron to check and start apache2
and mariadb
services if they're not running (you can change mariadb
to mysql
):
* * * * * if [ $(pgrep apache2 | wc -l) -le 0 ]; then service apache2 start; fi
* * * * * if [ $(pgrep mariadb | wc -l) -le 0 ]; then service mariadb start; fi
Better Script:
#!/bin/bash
email='[email protected]'
subject='MySQL process down and restarted'
MYSQL_START_COMMAND='sudo service mysql start'
MYSQL_PROCESS_NAME='mysqld'
PGREP_COMMAND='/usr/bin/pgrep'
#Check if MySQL is running
$PGREP_COMMAND $MYSQL_PROCESS_NAME
#If MySQL is not running, start it and send an email
if [ $? -ne 0 ]; then
$MYSQL_START_COMMAND
echo 'MySQL service was down and has been successfully started.' | mail -s "$subject" $email
fi
*/5 * * * * /root/mysqlstatus.sh > /dev/null 2>&1
awesome!