Last active
November 20, 2022 12:59
-
-
Save vodolaz095/5073080 to your computer and use it in GitHub Desktop.
watchdog.sh
script for checking server running
not mine, i stole it)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Service watchdog script | |
# Put in crontab to automatially restart services (and optionally email you) if they die for some reason. | |
# Note: You need to run this as root otherwise you won't be able to restart services. | |
# | |
# Example crontab usage: | |
# | |
# Strict check for apache2 service every 5 minutes, pipe results to /dev/null | |
# */5 * * * * sh /root/watchdog.sh apache2 "" > /dev/null | |
# | |
# "Loose" check for mysqld every 5 minutes, second parameter is the name of the service | |
# to restart, in case the application and service names differ. Also emails a report to [email protected] | |
# about the restart. | |
# */5 * * * * sh /root/watchdog.sh mysqld mysql [email protected] > /dev/null | |
# Common daemon names: | |
# Apache: | |
# apache2 - Debian/Ubuntu | |
# httpd - RHEL/CentOS/Fedora | |
# --- | |
# MySQL: | |
# mysql - Debian/Ubuntu | |
# mysqld - RHEL/CentOS/Fedora | |
# --- | |
# Service name | |
DATE=`date +%Y-%m-%d--%H-%M-%S` | |
SERVICE_NAME="$1" | |
SERVICE_RESTARTNAME="$2" | |
EXTRA_PGREP_PARAMS="-x" #Extra parameters to pgrep, for example -x is good to do exact matching | |
MAIL_TO="$3" #Email to send restart notifications to | |
#path to pgrep command, for example /usr/bin/pgrep | |
PGREP="pgrep" | |
#Check if we have have a second param | |
if [ -z $SERVICE_RESTARTNAME ] | |
then | |
RESTART="/sbin/service ${SERVICE_NAME} restart" #No second param | |
else | |
RESTART="/sbin/service ${SERVICE_RESTARTNAME} restart" #Second param | |
fi | |
pids=`$PGREP ${EXTRA_PGREP_PARAMS} ${SERVICE_NAME}` | |
#if we get no pids, service is not running | |
if [ "$pids" == "" ] | |
then | |
$RESTART | |
if [ -z $MAIL_TO ] | |
then | |
echo "$DATE : ${SERVICE_NAME} restarted - no email report configured." | |
else | |
echo "$DATE : Performing restart of ${SERVICE_NAME}" | mail -s "Service failure: ${SERVICE_NAME}" ${MAIL_TO} | |
fi | |
else | |
echo "$DATE : Service ${SERVICE_NAME} is still working!" | |
fi | |
# copylefted from https://gist.github.com/vodolaz095/5073080 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
mailto="mymail@mydomain" | |
/bin/bash /root/watchdog.sh mysqld mysqld "$mailto" | |
/bin/bash /root/watchdog.sh httpd httpd "$mailto" | |
/bin/bash /root/watchdog.sh pound pound "$mailto" | |
/bin/bash /root/watchdog.sh redis-server redis "$mailto" | |
/bin/bash /root/watchdog.sh memcached memcached "$mailto" | |
/bin/bash /root/watchdog.sh searchd searchd "$mailto" |
Mine is a bit shorter...
#!/bin/sh
app='[some command to start your stuff]'
if [ ! "$(pidof $app)" ]
then
[some command to start your stuff]
fi
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks for sharing @vodolaz!
I use this script to restart the memcached service if for some reason this service has failed.