Ich hätte gerne einen einzigen Befehl, der Apache auf jedem *nix-Betriebssystem neu startet. Derzeit arbeite ich mit Ubuntu, das
/usr/sbin/apache2ctl
/usr/sbin/service
- NEIN
apachectl
- NEIN
httpd
und Scientific Linux CERN 5, das
/usr/sbin/apachectl
/etc/init.d/httpd
- NEIN
apache2ctl
- NEIN
service
Ich möchte einen Hack wie diesen vermeiden.which service 2>/dev/null || which /etc/init.d/httpd
Antwort1
apachectl / apache2ctl ist das in Apache integrierte Tool zur Steuerung von Apache. In Ihrem Fall ist es wahrscheinlich das richtige Tool, da es mit Apache geliefert wird und auf allen Betriebssystemen vorhanden ist.
apachectl ist normalerweise für Apache 1.x und apache2ctl für Apache 2.x.
Wenn SLC5 mit Apache 2.x geliefert wird, ist es ziemlich seltsam, aber Sie könnten sowohl apachectl als auch apache2ctl in Ihrem Skript ausführen.
Antwort2
Sie könnten ein Skript verwenden, das prüft, welches Apachectl installiert ist, und dann das entsprechende ausführen.
#!/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