我已经搜索了一个小时,找到了上百个使用它的例子,但没有解释它的作用。我检查了一下man apache2ctl
;它也没有解释 k 标志(尽管它在例子中确实使用了它)。
答案1
是的,有点埋没了在描述中:
当以直通模式运行时,
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
答案2
编辑添加:抱歉,slhck 打字比我快 :D
“apache2ctl”实际上只是“httpd”可执行文件的前端,它以两种模式运行,具体取决于您是否希望它成为 SysV init 可脚本化文件,或者您是否希望将选项传递给 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 启动、重新启动或停止。