apache2 重啟、停止、優雅重啟、優雅停止


停止或者重新啟動Apache有兩種發送信號的方法

     第一種方法:

    直接使用linux的kill命令向運行中的進程發送信號。你也許你會注意到你的系統里運行着很多httpd進程。但你不應該直接對它們中的任何一個發送信號,而只要對已經在PidFile中記載下了自身PID的父進程發送信號。也就是說,你不必對父進程以外的任何進程發送信號。你可以向父進程發送三種信號:TERMHUPUSR1 ,我們過一會兒再進行詳細的說明。

    你可以用下面這樣的命令來向父進程發送信號:

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

 第二種方法
    使用下面將要描述的httpd二進制可執行文件的 -k 命令行選項:stoprestartgracefulgraceful-stop 。不過更推薦你使用apachectl控制腳本來向httpd二進制可執行文件傳遞這些選項。

    當你向httpd發送信號后,你可以這樣來讀取它的進行過程:

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

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信號並被強制退出。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM