常用基础 - Linux下的apachectl

  • 作者:KK

  • 发表日期:2017.7.31


要点速读

  1. Linux下的Apache会比Windows版本多一个叫apachectlshell脚本(一般就在/usr/local/apache/bin/apachectl),这个脚本基本上可以当成httpd命令来用,参数基本一样

  2. ./apachectl gracefulservice httpd restart更好用

  3. 用这个脚本能更方便地管理Apache,尽量用这个脚本

  4. 至于能传什么参数,怎么用,请先运行./apachectl help,其实就会看到httpd的帮助信息


我个人主要用于重启控制(graceful

一般我经常都是通过./apachectl graceful(后面简称graceful)来重启Apache,而不是service httpd restart(后面简称restart)

其它操作方面也是通过./apachectl -k start或stop来控制服务器启动、停止,它的好处是在重新启动守护进程之前,会使用configtest自动检查配置文件,以确保Apache不会死掉

如果用restart会向httpd守护进程发送SIGHUP信号,这样会导致httpd立即不管三七二十一就结束子进程,但主进程不会结束,而是重新加载配置文件(不管语法是否有问题,而一旦配置语法出问题就崩了),然后重新打开所有日志,最后重新产生所有子进程来接受后面的请求

graceful会发送SIGUSER信号,此时主进程也不会结束,而是先通知所有子进程“你们赶紧将目前已经收到的请求给处理完,在空闲下来的时候结束掉自身,我要重新加载配置再重新新配置下的子进程了!”然后等待所有子进程都结束后再重新创建所有子进程

所以这样来重启服务器会明显感知到线上业务不那么容易在间隙时间里发生中断,以前我也奇怪运维大哥为什么喜欢用graceful而不用restart(他好冷酷,不解释!),后来终于理解了哈