apache2ctl“ -k”标志是什么?


11

我一直在搜索一个小时,发现了一百个使用它的示例,但是没有解释它的作用。我查过man apache2ctl; 它也没有解释k标志(尽管在示例中确实使用了k标志)。

Answers:


8

是的,它有点埋没在描述中

在直通模式下操作时,apachectl可以采用httpd二进制可用的所有参数。

apachectl [ httpd-argument ]

因此,我们来看一下http的文档

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

httpd发出启动,重新启动或停止的信号。

因此,如果使用-k <option>,您将直接传递到httpd,需要此参数。

如果您不使用-kapache2ctl则将查找将自行处理的命令,这些命令也将相同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

我是新来的。您能用简单的英语向我解释省略k标志实际上会做什么吗?在我的Ubuntu服务器上,是否使用k标志似乎没有什么区别,据我所知,它始终可以成功重启。
BadHorsie

您看到的是正常现象。就像我说的那样,如果您不使用-k,那么apachectl它将自己处理命令,但其功能与相同httpd。如果使用-k,则命令按httpd原样传递。
slhck 2015年

老实说,我仍然不十分了解功能性的含义,但是您是在说,是否使用-k标志并不重要,它会以一种绕行方式进行相同的操作?
BadHorsie 2015年

1
这就是我的意思。两者都是出于历史原因。
slhck

“小埋”?为什么不这样称呼-apache文档确实糟透了。我认为这不是出于历史原因,也不是将其他参数传递给httpd的原因。
Palo

2

编辑添加:对不起,slhck类型比我快:D

实际上,“ apache2ctl”只是“ httpd”可执行文件的前端,并以两种模式运行,具体取决于您是希望将其作为SysV init脚本编写还是将选项传递给httpd可执行文件。-k实际上通过httpd传递。

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

当以直通模式运行时,apachectl可以采用httpd二进制文件可用的所有参数。

apachectl [httpd-argument]

因此,从httpd手册页http://httpd.apache.org/docs/2.2/programs/httpd.html

-k start | restart | graceful | stop | graceful-stop指示httpd启动,重新启动或停止。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.