Aqui está um shell script simples para ser usado no CentOS / Red Hat / Debian etc. Esse script funciona em outros sistemas operacionais com poucas modificações.
Copie o código do script abaixo e cole num arquivo, podendo ser chamado /usr/local/bin/httpdcheck.
Após isso, edite o crontab para rodar a cada 5 minutos
*/5 * * * * /usr/local/bin/httpdcheck >/dev/null 2>&1
Abaixo está o script, após editá-lo no arquivo, não esqueça de dar permissão de execução para o arquivo com chmod 755 /usr/local/bin/httpdcheck
#!/bin/bash
# Comente se está usando Debian
RESTART="/sbin/service httpd restart"
# Descomente se está usando Debian / Ubuntu Linux
#RESTART="/etc/init.d/apache2 restart"
#path do comando pgrep
PGREP="/usr/bin/pgrep"
# Nome do processo do Apache
# RHEL/CentOS/Fedora é httpd
# Debian 4.x é apache2
HTTPD="httpd"
# httpd pid
$PGREP ${HTTPD}
if [ $? -ne 0 ] # se o apache não está rodando
then
# restart apache
$RESTART
fi
Boa dica :)
Eu costumo usar o daemontools do quando preciso “gerenciar” um processo, se ele caior o daemontools já se encarrega de subi-lo novamente.
abraço
Olá, gostei muito da idéia desse script.
Queria saber como faço pra adicionar ele na contrab, não entendi quando você disse pra colocar ele na crontab.
Oi William,
Pra colocar o script na crontab, com o comando
crontab -e
você entra no modo de edição da cron do usuário que você está logado, esse script tem que rodar como root, aí você executa o comando “crontab -e” como root.
E no modo de edição, você cola a linha do cron que está no começo do post.
Pra sair, é como um comando do ‘vi’
<ESC>:wq!
Pronto.
Outra opção para adição do script no cron
Como root:
echo “*/5 * * * * /usr/local/bin/httpdcheck >/dev/null 2>&1″ >> /var/spool/cron/root ; /etc/init.d/crond restart
Abraço,