Was ist das apache2ctl "-k" -Flag?

11

Ich habe eine Stunde lang gesucht und hundert Beispiele gefunden, die es verwenden, aber keine Erklärung dafür, was es tut. Ich habe nachgesehen man apache2ctl; es erklärt auch nicht das k-Flag (obwohl es in Beispielen verwendet wird).

felwithe
quelle

Antworten:

8

Ja, es ist ein wenig in der Beschreibung begraben :

Im Pass-Through-Modus apachectlkönnen alle für die httpdBinärdatei verfügbaren Argumente verwendet werden .

apachectl [ httpd-argument ]

Schauen wir uns also die httpDokumentation an :

-k start|restart|graceful|stop|graceful-stop

Signale httpdzum Starten, Neustarten oder Stoppen.

Wenn Sie also verwenden -k <option>, werden Sie einfach an weiterleiten httpd, was dieses Argument benötigt.

Wenn Sie das nicht verwenden -k, apache2ctlsuchen Sie stattdessen nach Befehlen, die es selbst verarbeitet, und die wiederum dieselben sind, die es benötigen httpdwürde.


Ein Blick auf den Quellcode zeigt dieses Verhalten, bei dem eine caseAnweisung prüft, ob das erste Argument einer der erkannten internen Befehle ist, und schließlich (als Fallback) alles weitergegeben wird httpd.

case $ARGV in
start)
  HTTPD ${APACHE_ARGUMENTS} -k $ARGV # <= note the -k here
  # ...
stop|graceful-stop)
  # ...
# ...
*)
    $HTTPD ${APACHE_ARGUMENTS} $ARGV
    ERROR=$?
esac
slhck
quelle
Ich bin neu in diesem Bereich. Können Sie mir im Klartext erklären, was das Auslassen der k-Flagge tatsächlich bewirkt? Auf meinem Ubuntu-Server scheint es keinen Unterschied zu machen, ob ich das k-Flag verwende oder nicht. Soweit ich das beurteilen kann, wird es immer erfolgreich neu gestartet.
BadHorsie
Was Sie sehen, ist normal. Wie ich schon sagte, wenn Sie nicht verwenden -k, dann apachectlwerden die Befehle selbst behandelt, aber es tut das gleiche wie httpd. Wenn Sie verwenden -k, wird der Befehl unverändert an unverändert weitergeleitet httpd.
Slhck
Ich weiß immer noch nicht genau, was das für die Funktionalität bedeutet, um ehrlich zu sein, aber sagen Sie dann, dass es egal ist, ob Sie das Flag -k verwenden oder nicht, es wird das Gleiche auf Umwegen tun ?
BadHorsie
1
Das sage ich ja. Aus historischen Gründen funktionieren beide.
Slhck
"wenig begraben"? Warum nicht so nennen - die Apache-Dokumentation ist wirklich scheiße. Ich denke nicht, dass dies aus historischen Gründen ist, sondern aus Gründen, auch andere Argumente an httpd zu übergeben.
Palo
2

Bearbeiten, um hinzuzufügen: Sorry, slhck-Typen schneller als ich: D.

'apache2ctl' ist eigentlich nur ein Front-End für die ausführbare Datei 'httpd' und wird in zwei Modi ausgeführt, je nachdem, ob SysV init skriptfähig sein soll oder ob Optionen an die ausführbare Datei von httpd weitergeleitet werden sollen. Das -k wird tatsächlich an httpd weitergeleitet.

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 verwenden.

apachectl [httpd-argument]

Also von der httpd-Manpage http://httpd.apache.org/docs/2.2/programs/httpd.html

-k start | restart | graceful | stop | graceful-stop Signalisiert httpd zum Starten, Neustarten oder Stoppen.

Dawn Benton
quelle