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

3 comments
Join the conversationLuciano Borguetti - 29/09/2009
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
Daniel Kühl Lima - 29/09/2009
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.
Luciano Borguetti - 29/09/2009
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,