Nginx訊號控制 —— 如何優雅的關閉Nginx程序以及日誌切割
一、引言
接著上節部落格來,上節部落格教了大家如何在Linux系統中安裝nginx服務,也告訴了大家如何啟動nginx服務了。那如果是在日常正常使用nginx當中,更改了配置檔案,那有如何將nginx優雅的重啟。可不要像上節部落格使用kill -9 來殺死程序,萬一客戶下單操作一半,結果你這直接將nginx程序殺死,這就尷尬了。 本章就介紹如何用訊號來控制nginx!!!
二、Nginx訊號控制使用的幾個選項
TERM、INT | 快速關閉程序 |
QUIT | 優雅的關閉程序,即等請求結束之後再關閉 |
HUP | 改變配置檔案之後、平滑的重讀配置檔案 |
USR1 | 切割日誌 |
USR2 | Nginx平滑的升級 |
WINCH | 優雅的關閉舊程序,配合USR2進行升級 |
二、如何優雅的關閉Nginx程序
2.1、怎樣才是正確的關閉nginx程序? 使用 kill -INT 程序號(程序號可以通過"ps aux|grep nginx"來查詢)
2.2、如果在Nginx在啟動狀態下,更改了配置檔案,在不關閉nginx程序的前提下,讓更改的配置檔案生效。在這個時候我們就需要使用"kill -HUP 程序號",這樣就不需要關閉nginx服務,即可讓配置檔案重新生效。
我們來做個實驗,我們知道如果nginx啟動後,我們通過瀏覽器來訪問預設看到的是nginx歡迎頁面。
nginx主要的配置是在nginx安裝目錄下中的conf/nginx.conf檔案中,在這裡我寫好了一個test.html的頁面,然後更改了配置檔案,現在直接訪問nginx會跳轉到我自己寫的test.html。(頁面是寫在nginx安裝目錄下的html資料夾中
這個時候我們更改了配置檔案,但我們不需要重啟也能讓配置檔案生效。使用"kill -HUP 程序號"即可
三、日誌切割
在我們在訪問網路服務的時候,如果經過了Nginx代理,全部都有日誌儲存的。Nginx日誌是儲存在安裝目錄下的logs檔案下的,access.log 這個是記錄日常訪問的日誌。如果這個時候我們想吧之前的日誌做個備份,讓日誌寫到新的檔案中去,該怎麼處理呢?
有些童鞋說把access.log改個名字,然後在新建一個access.log的檔案。童鞋那你就錯啦!!!
在linux中每個檔案都有一個i節點,往檔案寫入內容也是根據你的i節點來的,就算你把名字改掉,檔案的i節點也不會改變,所以日誌還是會寫入到之前的檔案中。
這個時候就可以使用訊號了,我們把需要備份的日誌改一個名稱,然後使用"kill -USR1 程序號"即可。(整個操作如圖2)
操作完成後,系統會自動生產一個新的access.log檔案。