É comum serviços Apache, Nginx ou MySQL caírem. Então criei o shell script abaixo para reiniciar esses serviços automaticamente sem depender da minha interação manual. Para ajudar ele encaminha uma notificação ao Slack para alertar. Assim se o serviço cair repetidas vezes, é bom dar uma conferida.
Basta configurar ele no Crontab conforme o código comentado. Para receber notificações no Slack você precisa configurar um aplicativo e alterar abaixo a url em SLACK_WEBHOOK.
#!/bin/sh
# Configuração no Crontab:
# */5 * * * * cd /var/www/scripts/; ./persistente > persistente.log
SLACK_WEBHOOK="https://hooks.slack.com/services/xxxxx/xxxxx/XXXXXX"
HOSTNAME=`hostname`
# Apache
ps auxw | grep apache2 | grep -v grep > /dev/null
if [ $? != 0 ]
then
curl -X POST -H 'Content-type: application/json' --data '{"attachments": [{"text": "Apache foi reiniciado no servidor '"$HOSTNAME"'!","thumb_url": "https://tenfen.dev/assinatura_email/silvio4.png"}]}' $SLACK_WEBHOOK
/usr/sbin/service apache2 restart
fi
# Nginx
ps auxw | grep nginx | grep -v grep > /dev/null
if [ $? != 0 ]
then
curl -X POST -H 'Content-type: application/json' --data '{"attachments": [{"text": "Nginx foi reiniciado no servidor '"$HOSTNAME"'!","thumb_url": "https://tenfen.dev/assinatura_email/silvio4.png"}]}' $SLACK_WEBHOOK
/usr/sbin/service nginx restart
fi
# MySQL
ps auxw | grep mysql | grep -v grep > /dev/null
if [ $? != 0 ]
then
curl -X POST -H 'Content-type: application/json' --data '{"attachments": [{"text": "MariaDB foi reiniciado no servidor '"$HOSTNAME"'!","thumb_url": "https://tenfen.dev/assinatura_email/silvio4.png"}]}' $SLACK_WEBHOOK
/usr/sbin/service mysql restart
fi