nginx信號量
阿新 • • 發佈:2019-03-30
日誌文件 proc roc 但是 linux中 worker .html 觀察 日誌
nginx信號說明相關說明
信號名稱 | 作用 |
---|---|
TERM,INT | 快速關閉 |
QUIT | 從容關閉 |
HUP | 重新加載配置,用新的配置開始新的工作進程,從容關閉舊的工作進程 |
USR1 | 重新打開日誌文件 |
USR2 | 平滑升級可執行程序 |
WINCH | 從容關閉工作進程 |
hup信號優雅重啟
a.html
<html>
<h>這裏是a.html文件</h>
<script>
window.location.href='./';
</script>
</html>
index.html
<html> <h>這裏是index.html文件</h> <script> window.location.href='./'; </script> </html>
查看當前nginx的配置文件
server{
listen 80;
server_name localhost;
root /Users/lidong/www;
index index.html index.htm;
access_log /Users/lidong/wwwlogs/access.log;
error_log /Users/lidong/wwwlogs/error.log;
}
修改nginx的配置文件,將nginx設置為默認讀取a.html
server{ listen 80; server_name localhost; root /Users/lidong/www; index a.html index.html index.htm; access_log /Users/lidong/wwwlogs/access.log; error_log /Users/lidong/wwwlogs/error.log; }
ps aux|grep nginx lidong 5019 0.0 0.0 4339176 1136 ?? S 11:16上午 0:00.01 nginx: worker process lidong 352 0.0 0.0 4339176 1480 ?? S 五08上午 0:00.05 nginx: master process /usr/local/opt/nginx/bin/nginx -g daemon off; lidong 5284 0.0 0.0 4277252 824 s000 S+ 2:04下午 0:00.01 grep nginx
通過ps命令得到nginx的master進程id為352,通過hup信號重啟配置
kill -HUP 352
打開瀏覽器不斷觀察發現使用信號HUP後會自動的跳轉到a.html,我們並沒有重啟,而且發現不是立馬的跳轉是過幾秒後跳轉的,這就是優雅的重新讀取nginx的配置文件,從容的關閉舊的進程。
USR1重讀日誌
server{
listen 80;
server_name localhost;
root /Users/lidong/www;
index index.html index.htm;
access_log /Users/lidong/wwwlogs/access.log;
error_log /Users/lidong/wwwlogs/error.log;
}
刷新http://localhost/index.html 頁面
查看日誌情況
QiongdeMacBook-Pro:wwwlogs lidong$ ls -l
total 80
-rw-r--r-- 1 lidong staff 16201 3 30 14:36 access.log
QiongdeMacBook-Pro:wwwlogs lidong$ mv access.log access.log.bak
QiongdeMacBook-Pro:wwwlogs lidong$ ls -l
total 88
-rw-r--r-- 1 lidong staff 16410 3 30 14:42 access.log.bak
從上面可以看出來雖然改變了log日誌文件的名稱,但是log日誌還是在寫入,出現這問題的原因linux中文件識別是以文件node的id來的。
使用USR1信號用再次刷新
QiongdeMacBook-Pro:wwwlogs lidong$ kill -USR1 352
QiongdeMacBook-Pro:wwwlogs lidong$ ls -l
total 88
-rw-r--r-- 1 lidong staff 0 3 30 14:49 access.log
-rw-r--r-- 1 lidong staff 16410 3 30 14:42 access.log.bak
-rw-r--r-- 1 lidong staff 252 3 30 14:28 error.log
QiongdeMacBook-Pro:wwwlogs lidong$ ls -l
total 96
-rw-r--r-- 1 lidong staff 418 3 30 14:49 access.log
-rw-r--r-- 1 lidong staff 16410 3 30 14:42 access.log.bak
-rw-r--r-- 1 lidong staff 252 3 30 14:28 error.log
通過USR1型號量來重讀日誌,繼續刷新頁面,會重新生成access.log日誌文件,這個對於運維做日誌的備份十分有作用。
這裏有個小技巧,通過ps獲取pid可以重新加載配置文件,平滑重啟服務,但是感覺比較麻煩,我們可以使用如下方法操作.
查看配置文件知道nginx的pid存儲在那個文件
kill -HUP `cat /usr/local/etc/nginx/nginx.pid`
USR2平滑升級
假設我們重新編譯了新的版本的nginx,這個時候/usr/local/nginx/bin nginx 的版本就不是之前的版本了如果啟動更新會報錯。
kill -USR2 `cat /usr/local/etc/nginx/nginx.pid`
這個時候使用這個命令來平滑升級nginx服務器
點擊進入本人github倉庫查看更多
nginx信號量