Co to jest flaga „-k” apache2ctl?

11

Szukałem od godziny i znalazłem sto przykładów, które go wykorzystują, ale nie wyjaśniłem, co robi. Sprawdziłem man apache2ctl; nie wyjaśnia też flagi k (choć używa jej w przykładach).

czuć
źródło

Odpowiedzi:

8

Tak, jest trochę zakopany w opisie :

Działając w trybie tranzytowym, apachectlmożna pobrać wszystkie argumenty dostępne dla httpdpliku binarnego.

apachectl [ httpd-argument ]

Spójrzmy więc na httpdokumentację :

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

Sygnały httpddo uruchomienia, ponownego uruchomienia lub zatrzymania.

Więc jeśli użyjesz -k <option>, po prostu przejdziesz do httpd, który potrzebuje tego argumentu.

Jeśli nie użyjesz polecenia -k, apache2ctlzamiast tego poszuka poleceń, które sam sobie poradzi, które są znowu takie same httpd.


Patrząc na kod źródłowy przejawia się to zachowanie, w którym caseinstrukcja sprawdza, czy pierwszy argument jest jednym z rozpoznanych poleceń wewnętrznych, a na koniec (jako rezerwowy) wszystko jest przekazywane httpd.

case $ARGV in
start)
  HTTPD ${APACHE_ARGUMENTS} -k $ARGV # <= note the -k here
  # ...
stop|graceful-stop)
  # ...
# ...
*)
    $HTTPD ${APACHE_ARGUMENTS} $ARGV
    ERROR=$?
esac
slhck
źródło
Jestem w tym nowy. Czy mógłbyś mi wyjaśnić prostym językiem, co faktycznie zrobi flaga k? Na moim serwerze Ubuntu wydaje się, że nie ma znaczenia, czy użyję flagi k, czy nie, zawsze uruchamia się ponownie, o ile wiem.
BadHorsie
To, co widzisz, jest normalne. Jak powiedziałem, jeśli nie użyjesz -k, to apachectlobsłuży same polecenia, ale robi to samo co httpd. Jeśli używasz -k, polecenie jest przekazywane w stanie, w httpdjakim się znajduje.
slhck
Szczerze mówiąc, wciąż nie wiem, co to oznacza pod względem funkcjonalności, ale mówisz, że nie ma znaczenia, czy użyjesz flagi -k, czy nie, zrobi to samo na rondzie ?
BadHorsie
1
Tak mówię, tak. Oba działają z powodów historycznych.
slhck
„mało zakopany”? Dlaczego nie nazwać tego - dokumentacja apache naprawdę jest do kitu. Nie sądzę, że dzieje się tak z powodów historycznych, z powodów przekazania innych argumentów do httpd.
Palo
2

Edytuj, aby dodać: Przepraszam, typy slhck są szybsze ode mnie: D

„apache2ctl” jest w rzeczywistości tylko nakładką na plik wykonywalny „httpd” i działa w dwóch trybach, w zależności od tego, czy chcesz, aby był skryptem inicjującym SysV, czy też chcesz przekazać opcje do pliku wykonywalnego httpd. -K faktycznie przechodzi do httpd.

http://httpd.apache.org/docs/2.2/programs/apachectl.html

Podczas działania w trybie tranzytowym apachectl może przyjmować wszystkie argumenty dostępne dla pliku binarnego httpd.

apachectl [argument httpd]

Więc ze strony podręcznika httpd http://httpd.apache.org/docs/2.2/programs/httpd.html

-k start | restart | graceful | stop | graceful-stop Sygnalizuje httpd, aby uruchomić, zrestartować lub zatrzymać.

Dawn Benton
źródło