Reinicio multiplataforma de Apache

Reinicio multiplataforma de Apache

Me gustaría tener un comando único que reinicie Apache en cualquier sistema operativo *nix. Actualmente estoy trabajando con Ubuntu, que tiene

  • /usr/sbin/apache2ctl
  • /usr/sbin/service
  • Noapachectl
  • Nohttpd

y Scientific Linux CERN 5, que tiene

  • /usr/sbin/apachectl
  • /etc/init.d/httpd
  • Noapache2ctl
  • Noservice

Me gustaría evitar usar un truco comowhich service 2>/dev/null || which /etc/init.d/httpd

Respuesta1

apachectl / apache2ctl es la herramienta integrada de Apache para controlar Apache, probablemente sea la herramienta adecuada para usar en su caso, ya que viene con Apache y será la única en todos los sistemas operativos.
apachectl es normalmente para Apache 1.x y apache2ctl para Apache 2.x.
Si SLC5 viene con Apache 2.x, es bastante extraño, pero podrías ejecutar apachectl y apache2ctl en tu script.

Respuesta2

Podrías usar un script que verifique qué apachectl está instalado y luego ejecute el apropiado.

#!/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

información relacionada