Reinicialização multiplataforma do Apache

Reinicialização multiplataforma do Apache

Eu gostaria de ter um único comando que reiniciasse o Apache em qualquer sistema operacional *nix. Atualmente estou trabalhando com Ubuntu, que tem

  • /usr/sbin/apache2ctl
  • /usr/sbin/service
  • nãoapachectl
  • nãohttpd

e Scientific Linux CERN 5, que possui

  • /usr/sbin/apachectl
  • /etc/init.d/httpd
  • nãoapache2ctl
  • nãoservice

Eu gostaria de evitar usar um hack comowhich service 2>/dev/null || which /etc/init.d/httpd

Responder1

apachectl / apache2ctl é a ferramenta integrada do apache para controlar o apache, provavelmente é a ferramenta certa para usar no seu caso, pois vem com o apache, será a mesma em todos os sistemas operacionais.
apachectl é normalmente para Apache 1.x e apache2ctl para Apache 2.x.
Se o SLC5 vier com o Apache 2.x, é muito estranho, mas você pode executar o apachectl e o apache2ctl em seu script.

Responder2

Você poderia usar um script que verifica qual apachectl está instalado e então executar o apropriado.

#!/bin/bash

if [ -e /usr/sbin/apacche2ctl ]
then
    /usr/sbin/apache2ctl restart
elif [ -e /usr/sbin/apachectl ]
then
    /usr/sbin/apachectl restart
else
    echo "No Apache control program found"
fi

informação relacionada