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ão
apachectl
- não
httpd
e Scientific Linux CERN 5, que possui
/usr/sbin/apachectl
/etc/init.d/httpd
- não
apache2ctl
- não
service
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