¿Qué es la bandera apache2ctl "-k"?

11

He estado buscando durante una hora y he encontrado cientos de ejemplos que lo usan, pero no hay una explicación de lo que hace. Lo comprobé man apache2ctl; tampoco explica la bandera k (aunque sí la usa en ejemplos).

felwithe
fuente

Respuestas:

8

Sí, está un poco enterrado en la descripción :

Al actuar en modo de transferencia, apachectlpuede tomar todos los argumentos disponibles para el httpdbinario.

apachectl [ httpd-argument ]

Entonces veamos la httpdocumentación de entonces:

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

Señales httpdpara iniciar, reiniciar o detener.

Entonces, si usa -k <option>, simplemente pasará a httpd, que necesita este argumento.

Si no usa el -k, en apache2ctlsu lugar, buscará los comandos que manejará por sí mismo, que nuevamente son los mismos httpdque tomaría.


Al observar el código fuente se exhibe este comportamiento, donde una casedeclaración verifica si el primer argumento es uno de los comandos internos reconocidos y, finalmente, (como respaldo), todo se transfiere httpd.

case $ARGV in
start)
  HTTPD ${APACHE_ARGUMENTS} -k $ARGV # <= note the -k here
  # ...
stop|graceful-stop)
  # ...
# ...
*)
    $HTTPD ${APACHE_ARGUMENTS} $ARGV
    ERROR=$?
esac
slhck
fuente
Soy nuevo en esto. ¿Podría explicarme en inglés simple qué omitirá realmente la bandera k? En mi servidor Ubuntu parece no hacer ninguna diferencia si uso el indicador k o no, siempre se reinicia con éxito hasta donde puedo decir.
BadHorsie
Lo que estás viendo es normal. Como dije, si no lo usa -k, apachectlmanejará los comandos en sí, pero hace lo mismo que httpd. Si lo usa -k, el comando se pasa a httpdcomo está.
slhck
Todavía no sé lo que eso significa en términos de funcionalidad, para ser honesto, pero ¿estás diciendo que no importa si usas la bandera -k o no, hará lo mismo de una manera indirecta? ?
BadHorsie
1
Eso es lo que estoy diciendo, sí. Es por razones históricas que ambos funcionan.
slhck
"poco enterrado"? ¿Por qué no llamar a esto? La documentación de Apache realmente apesta. No creo que esto sea por razones históricas, es por razones de pasar también otros argumentos a httpd.
Palo
2

Editar para agregar: Lo sentimos, slhck escribe más rápido que yo: D

'apache2ctl' es en realidad solo un front-end para el ejecutable 'httpd' y se ejecuta en dos modos dependiendo de si desea que sea Scriptable de inicio SysV o si desea transferir opciones al ejecutable httpd. El -k en realidad pasa a httpd.

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

Al actuar en modo de transferencia, apachectl puede tomar todos los argumentos disponibles para el binario httpd.

apachectl [argumento-httpd]

Entonces, desde la página de manual de httpd, http://httpd.apache.org/docs/2.2/programs/httpd.html

-k start | restart | graceful | stop | graceful-stop Señala httpd para iniciar, reiniciar o detener.

Dawn Benton
fuente