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
- No
apachectl
- No
httpd
y Scientific Linux CERN 5, que tiene
/usr/sbin/apachectl
/etc/init.d/httpd
- No
apache2ctl
- No
service
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