Что такое флаг «-k» apache2ctl?

11

Я искал час и нашел сотни примеров, которые его используют, но без объяснения того, что он делает. Я проверил man apache2ctl; он также не объясняет флаг k (хотя он использует его в примерах).

felwithe
источник

Ответы:

8

Да, это немного скрыто в описании :

Действуя в сквозном режиме, apachectlможет принимать все аргументы, доступные для httpdдвоичного файла.

apachectl [ httpd-argument ]

Итак, давайте посмотрим на httpдокументацию тогда:

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

Сигналы httpdдля запуска, перезапуска или остановки.

Так что, если вы используете -k <option>, вы просто перейдете к httpd, который нуждается в этом аргументе.

Если вы не используете -k, apache2ctlвместо этого будет искать команды, которые он будет обрабатывать сам, которые снова httpdбудут такими же, как и при выполнении.


При взгляде на исходный код проявляется такое поведение, когда caseоператор проверяет, является ли первый аргумент одной из распознанных внутренних команд, и, наконец, (как запасной вариант) все передается httpd.

case $ARGV in
start)
  HTTPD ${APACHE_ARGUMENTS} -k $ARGV # <= note the -k here
  # ...
stop|graceful-stop)
  # ...
# ...
*)
    $HTTPD ${APACHE_ARGUMENTS} $ARGV
    ERROR=$?
esac
slhck
источник
Я новичок в этом. Не могли бы вы объяснить мне простым языком, что на самом деле делает пропуск флага k? На моем сервере Ubuntu, кажется, не имеет значения, использую ли я флаг k или нет, он всегда перезапускается успешно, насколько я могу судить.
BadHorsie
То, что вы видите, нормально. Как я уже сказал, если вы не используете -k, то apachectlбудете обрабатывать сами команды, но он делает то же самое, что и httpd. Если вы используете -k, команда передается httpdкак есть.
Slhck
Я до сих пор не знаю, что это означает с точки зрения функциональности, если честно, но вы говорите тогда, что не имеет значения, используете ли вы флаг -k или нет, он будет делать то же самое окольным путем ?
BadHorsie
1
Это то, что я говорю, да. По историческим причинам оба работают.
Slhck
"немного похоронен"? Почему бы не назвать это - документация apache действительно отстой. Я не думаю, что это по историческим причинам, по причинам передачи и других аргументов в httpd.
Пало
2

Изменить, чтобы добавить: Извините, slhck печатает быстрее меня: D

«apache2ctl» на самом деле является лишь внешним интерфейсом для исполняемого файла «httpd» и работает в двух режимах, в зависимости от того, хотите ли вы, чтобы он был сценарием инициализации SysV, или если вы хотите передать опции для исполняемого файла httpd. -K фактически передается через httpd.

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

При работе в сквозном режиме apachectl может принимать все аргументы, доступные для двоичного файла httpd.

apachectl [httpd-аргумент]

Итак, со страницы руководства httpd http://httpd.apache.org/docs/2.2/programs/httpd.html

-k start | restart | graceful | stop | graceful-stop Сигнализирует httpd о запуске, перезапуске или остановке.

Рассвет Бентон
источник