Auto restart Apache quando o processo “morre”

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
Share this post

3 comments

Join the conversation
  • Luciano Borguetti - 29/09/2009 reply

    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 reply

    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 reply

    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,

Leave a Reply Cancel