apache主进程是唯一信号入口,必须向其pid(如/usr/local/apache2/logs/httpd.pid)发送sigterm、sighup、sigusr1或sigwinch等信号实现停止、重启、优雅重启或优雅停止;子进程不响应信号,apachectl封装命令更安全可靠。

Apache 二进制安装后,主进程(父进程)是唯一响应信号的入口,所有控制操作都必须发给它,不能直接对子进程发信号。关键在于准确获取主进程 PID,并发送对应语义的 Unix 信号。
必须只向主进程发信号
主进程 PID 默认写入配置中指定的 PidFile(如/usr/local/apache2/logs/httpd.pid 或 /var/run/httpd.pid)。
子进程由主进程派生,不监听信号,也不参与配置重载或生命周期管理。向任意子进程发信号无效,甚至可能意外中断正在处理的请求。
常用信号及其作用
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
操作步骤要准确
- 确认 PidFile 路径:查看httpd.conf 中 PidFile 指令值,例如 PidFile "/usr/local/apache2/logs/httpd.pid"
- 获取主进程 PID:cat /usr/local/apache2/logs/httpd.pid 或 pgrep -f 'httpd -k start'
- 发送信号:kill -USR1 $(cat /usr/local/apache2/logs/httpd.pid)
- 观察效果:tail -f /usr/local/apache2/logs/error_log 查看重载或退出日志;ps aux | grep httpd 看子进程是否滚动更新
推荐用 apachectl 封装命令
虽然底层仍是发信号,但apachectl 更安全、容错强:
- apachectl stop → 等价于 kill -TERM
- apachectl restart → 等价于 kill -HUP
- apachectl graceful → 等价于 kill -USR1
- apachectl graceful-stop → 等价于 kill -WINCH
它会自动定位 PidFile、校验 httpd 是否运行、提示错误,比手动 kill 更可靠。









