第一種方法: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信號並被強制退出。