第一种方法:linux
直接使用linux的kill
命令向运行中的进程发送信号。你也许你会注意到你的系统里运行着不少httpd
进程。但你不该该直接对它们中的任何一个发送信号,而只要对已经在PidFile
中记载下了自身PID的父进程发送信号。也就是说,你没必要对父进程之外的任何进程发送信号。你能够向父进程发送三种信号:TERM
、HUP
、USR1
,咱们过一下子再进行详细的说明。apache
你能够用下面这样的命令来向父进程发送信号:spa
kill -TERM cat /usr/local/apache2/logs/httpd.pid
命令行
第二种方法
使用下面将要描述的httpd
二进制可执行文件的 -k
命令行选项:stop
、restart
、graceful
、graceful-stop
。不过更推荐你使用apachectl
控制脚原本向httpd
二进制可执行文件传递这些选项。rest
当你向httpd
发送信号后,你能够这样来读取它的进行过程:日志
tail -f /usr/local/apache2/logs/error_log
code
1.中止 apachectl -k stop 发送TERM或stop信号到父进程可使它马上杀死全部子进程。这将花费一些时间来杀死全部子进程。而后父进程本身也退出。全部进行中的请求将被强行停止,并且再也不接受其它请求。 2.重启 apachectl -k restart 向父进程发送HUP或restart信号会使它象收到TERM信号同样杀掉全部的子进程,不一样之处在于父进程自己并不退出。它从新读入配置文件、从新打开日志文件。而后产生一系列新的子进程来继续服务。 3.优雅重启 apachectl -k graceful USR1或graceful信号使得父进程建议子进程在完成它们如今的请求后退出(若是他们没有进行服务,将会马上退出)。父进程从新读入配置文件并从新打开日志文件。每当一个子进程死掉,父进程马上用新的配置文件产生一个新的子进程并马上开始伺服新的请求。 4.优雅中止 apachectl -k graceful-stop WINCH或graceful-stop信号使得父进程建议子进程在完成它们如今的请求后退出(若是他们没有进行服务,将会马上退出)。而后父进程删除PidFile并中止在全部端口上的监听。父进程仍然继续运行并监视正在处理请求的子进程,一旦全部子进程完成任务并退出或者超过由GracefulShutdownTimeout指令规定的时间, 父进程将会退出。在超时的状况下,全部子进程都将接收到TERM信号并被强制退出。