O que é o sinalizador apache2ctl "-k"?

11

Estou procurando há uma hora e encontrei centenas de exemplos que o usam, mas nenhuma explicação do que ele faz. Eu verifiquei man apache2ctl; também não explica o sinalizador k (embora ele o use em exemplos).

felwithe
fonte

Respostas:

8

Sim, está um pouco enterrado na descrição :

Ao atuar no modo de passagem, apachectlpode levar todos os argumentos disponíveis para o httpdbinário.

apachectl [ httpd-argument ]

Então, vamos dar uma olhada na httpdocumentação de :

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

Sinais httpdpara iniciar, reiniciar ou parar.

Então, se você usar -k <option>, simplesmente passará para httpd, que precisa desse argumento.

Se você não usar o -k, apache2ctlprocurará por comandos que ele próprio manipulará, que são novamente os mesmos que httpdseriam necessários.


Observar o código-fonte exibe esse comportamento, onde uma caseinstrução verifica se o primeiro argumento é um dos comandos internos reconhecidos e, finalmente (como um fallback), tudo é repassado httpd.

case $ARGV in
start)
  HTTPD ${APACHE_ARGUMENTS} -k $ARGV # <= note the -k here
  # ...
stop|graceful-stop)
  # ...
# ...
*)
    $HTTPD ${APACHE_ARGUMENTS} $ARGV
    ERROR=$?
esac
slhck
fonte
Eu sou novo nisso. Você poderia me explicar em inglês simples o que omitir a bandeira k realmente fará? No meu servidor Ubuntu, parece que não faz diferença se eu usar a flag k ou não, ela sempre reinicia com sucesso, tanto quanto eu sei.
BadHorsie
O que você está vendo é normal. Como eu disse, se você não usar -k, ele apachectlmanipulará os comandos em si, mas fará o mesmo que httpd. Se você usar -k, o comando será passado para o estado em httpdque se encontra.
slhck
Eu ainda não sei realmente o que isso significa em termos de funcionalidade, para ser sincero, mas você está dizendo que não importa se você usa a bandeira -k ou não, ela fará a mesma coisa de maneira indireta ?
21915 BadHorsie
1
É o que estou dizendo, sim. É por razões históricas que ambos funcionam.
slhck
"pouco enterrado"? Por que não chamar isso - a documentação do apache é realmente péssima. Eu não acho que isso é por razões históricas, é por razões de passar também outros argumentos para httpd.
Palo
2

Editar para adicionar: Desculpe, tipos slhck mais rápido que eu: D

'apache2ctl' é na verdade apenas um front-end para o executável 'httpd' e é executado em dois modos, dependendo se você deseja que ele seja script de inicialização do SysV init ou se deseja passar opções de passagem para o executável httpd. Na verdade, o -k é passado para o httpd.

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

Ao atuar no modo de passagem, o apachectl pode usar todos os argumentos disponíveis para o binário httpd.

apachectl [argumento httpd]

Portanto, na página de manual httpd, http://httpd.apache.org/docs/2.2/programs/httpd.html

-k start | restart | graceful | stop | graceful-stop Sinaliza httpd para iniciar, reiniciar ou parar.

Dawn Benton
fonte