Creating Shell Script
Step 1: Open Terminal and login to your server as root via ssh.
Step 2: Create shell script file.
1 2 3 4 |
cd ~ nano mysqlfix.sh |
This will let you create a shell script in root directory for root user. You can use any name as per your preferences for the .sh file.
Step 3: Write the script to check and restart MySQL and send an email alert.
1 2 3 4 5 6 7 8 |
PATH=/usr/sbin:/usr/bin:/sbin:/bin if [[ ! "$(/usr/sbin/service mysql status)" =~ "start/running" ]] then echo "MySQL restarted" | mail -s "Email Subject" email@domain.com sudo service mysql start fi |
Make sure you change the Email Subject and email address.
Step 4: Once you are done with the script press CTRL + x and you will be asked to save the changes. Type Y and hit enter. You will be returned to terminal and mysqlfix.sh file will be created in the root directory.
Step 5: Give this file executable permissions
1 2 3 |
chmod +x mysqlfix.sh |
Testing the Script
Now our script is ready, lets test if this runs fine.
Enter following commands in terminal:
1 2 3 |
/usr/sbin/service mysql status |
Terminal will print something like this:
mysql start/running, process 2409
1 2 3 |
/usr/sbin/service mysql stop |
This will stop MySQL service, to verify run the status command again and it will print something like this:
mysql stop/waiting
1 2 3 |
~/mysqlfix.sh |
This will run the script we created to check and restart the service. You should get an email with the subject and message to the email address you specified in the script.
Run the status command again and it should print
mysql start/running, process ####
If everything goes well in this step, lets create the cron job to run our script every minute
Create Cron Job
Step 1: Installing the cron job
Make sure you are logged in to your server via ssh as root, then type following command in terminal:
1 2 3 |
crontab -e |
Once you see the crontab screen type the following line at the end of this file:
1 2 3 |
*/1 * * * * /root/mysqlfix.sh |
Press CTRL + x and you will be asked to save the changes, press Y and hit enter. You will see following line in terminal:
crontab: installing new crontab
Now our cron job is installed.
To test if it runs fine, Type following command:
1 2 3 |
/usr/sbin/service mysql stop |
This will stop MySQL service on your server. Now you should wait for one minute and and get an email with the subject and message we specified in the mysqlfix.sh file.
If you find this helpful give credits to these guys.