apache服务器停止和重启

本文介绍了如何通过发送信号来优雅地重启或停止Apache服务器的方法,包括使用Unix的kill命令及-apachectl控制脚本的不同选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    要停止或者重启apache,必须向正在运行的httpd进程发送信号。有两种方式:

    1.使用Unix系统的kill命令

     只要向父进程(在PidFile中可以找到该进程的pid)发送终止信号即可。有四个信号可以发送,分别是:TERM、USR1、HUP、WINCH。

     命令示例:

 

kill -TERM `cat /usr/local/apache2/logs/httpd.pid`

    2.使用-k命令通知httpd进程

      命令参数有:stoprestartgracefulgraceful-stop

 

httpd -k start

   官方推荐使用apachectl控制脚本。

 

apachectl -k stop

 

向httpd发送完信号后,可使用如下命令查询进度:

tail -f /usr/local/apache2/logs/error_log

 

    Signal: TERM

apachectl -k stop

   向父进程发送TERM或者stop信号,父进程立即尝试杀掉所有子进程,这个过程可能需要持续几秒,之后父进程自行退出。所有该进程的请求终止。

     Signal: USR1

 

apachectl -k graceful
 

   父进程收到USR1 或者 graceful 信号后,通知子进程在处理完当前请求后退出(如果没有请求立即退出),父进程重读配置文件并重新打开日志,当子进程死掉后,父进程使用新生成的子进程替换它,这样新子进程可以立即向请求提供服务。 

    代码设计为总是遵守MPMs的进程控制指令,因此在重启过程中,为客户端服务的进程和线程数总是维护在一个合适的水平(适合当前负载和参数设置)。

    代码设计为既能尽量较少不能提供服务的时间也能遵守你的调节参数。

    status module使用G标识这些在graceful restart之前启动的仍在提供服务的子进程。

    目前,对于循环日志脚本,还没有办法确切知道所有子进程是否结束对重启前的日志的写操作。建议延迟一段时间再对原日志进行操作。

 

    如果配置文件有错误,父进程不会重启,而是因错误退出,而子进程仍然会运行到处理完最后一个请求。这样会导致当你试图重启服务器时,它不能绑定到监听端口。

   解决办法之一,可以在重启前使用-t命令进行语法检查。

      Signal: HUP

 

apachectl -k restart

   向父进程发送HUP或者restart信号,它会杀死所有子进程,但是父进程本身不退出,它重读配置文件并重新打开日志文件,然后重新生成子进程集继续提供服务。

 

    Signal: WINCH

apachectl -k graceful-stop

 向父进程发送WINCH 或者graceful-stop 信号,父进程首先通知子进程在处理完当前请求后退出(无请求立即退出),然后父进程移除PidFile并且停止监听端口。父进程会持续运行并监控处理请求的子进程,一旦所有子进程停止或者到达GracefulShutdownTimeout规定的时间,父进程退出。到达超时时间,剩余的子进程将会被发送TERM信号强制退出。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值