Ich habe eine Stunde lang gesucht und hundert Beispiele gefunden, die es verwenden, aber keine Erklärung, was es tut. Ich habe nachgeschaut man apache2ctl
; es erklärt auch nicht das k-Flag (obwohl es in Beispielen verwendet wird).
Antwort1
Ja, es ist ein wenig vergrabenin der Beschreibung:
Wenn im Pass-Through-Modus agiert wird, können alle für die Binärdatei
apachectl
verfügbaren Argumente übernommen werden .httpd
apachectl [ httpd-argument ]
Schauen wir uns also anhttp
's DokumentationDann:
-k start|restart|graceful|stop|graceful-stop
Signale
httpd
zum Starten, Neustarten oder Stoppen.
Wenn Sie also verwenden -k <option>
, übergeben Sie einfach an httpd
, das dieses Argument benötigt.
Wenn Sie nicht verwenden -k
, apache2ctl
sucht es stattdessen nach Befehlen, die es selbst verarbeitet. Dies sind wiederum dieselben, die es httpd
annehmen würde.
Ein Blick auf den Quellcode zeigt dieses Verhalten. Eine case
Anweisung prüft, ob das erste Argument einer der erkannten internen Befehle ist, und schließlich (als Fallback) wird alles an weitergegeben httpd
.
case $ARGV in
start)
HTTPD ${APACHE_ARGUMENTS} -k $ARGV # <= note the -k here
# ...
stop|graceful-stop)
# ...
# ...
*)
$HTTPD ${APACHE_ARGUMENTS} $ARGV
ERROR=$?
esac
Antwort2
Bearbeiten, um hinzuzufügen: Entschuldigung, slhck tippt schneller als ich :D
„apache2ctl“ ist eigentlich nur ein Frontend für die ausführbare Datei „httpd“ und läuft in zwei Modi, je nachdem, ob Sie es per SysV-Init-Skript ausführen möchten oder ob Sie Optionen an die ausführbare Datei „httpd“ weitergeben möchten. Das „-k“ wird tatsächlich an httpd weitergegeben.
http://httpd.apache.org/docs/2.2/programs/apachectl.html
Im Pass-Through-Modus kann Apachectl alle für die httpd-Binärdatei verfügbaren Argumente übernehmen.
apachectl [ httpd-argument ]
Aus der Manpage von httpd:http://httpd.apache.org/docs/2.2/programs/httpd.html
-k start|restart|graceful|stop|graceful-stop Signalisiert httpd, zu starten, neu zu starten oder zu stoppen.