首頁技術(shù)文章正文

Nginx服務(wù)器啟停命令

更新時間:2021-07-16 來源:黑馬程序員 瀏覽量:

Nginx服務(wù)器啟停命令

Nginx安裝完成后,接下來我們要學(xué)習(xí)的是如何啟動、重啟和停止Nginx的服務(wù)。對于Nginx的啟停在linux系統(tǒng)中也有很多種方式,我們本次課程介紹兩種方式:

1.Nginx服務(wù)的信號控制

2.Nginx的命令行控制

方式一:Nginx服務(wù)的信號控制

前面在提到Nginx的高性能,其實(shí)也和它的架構(gòu)模式有關(guān)。Nginx默認(rèn)采用的是多進(jìn)程的方式來工作的,當(dāng)將Nginx啟動后,我們通過ps -ef |grep nginx命令可以查看到如下內(nèi)容:

信號控制

從上圖中可以看到,Nginx后臺進(jìn)程中包含一個master進(jìn)程和多個worker進(jìn)程,master進(jìn)程主要用來管理worker進(jìn)程,包含接收外界的信息,并將接收到的信號發(fā)送給各個worker進(jìn)程,監(jiān)控worker進(jìn)程的狀態(tài),當(dāng)worker進(jìn)程出現(xiàn)異常退出后,會自動重新啟動新的worker進(jìn)程。而worker進(jìn)程則是專門用來處理用戶請求的,各個worker進(jìn)程之間是平等的并且相互獨(dú)立,處理請求的機(jī)會也是一樣的。nginx的進(jìn)程模型,我們可以通過下圖來說明下:

Nginx管理員

我們現(xiàn)在作為管理員,只需要通過給master進(jìn)程發(fā)送信號就可以來控制Nginx,這個時候我們需要有兩個前提條件,一個是要操作的master進(jìn)程,一個是信號。

(1)要想操作Nginx的master進(jìn)程,就需要獲取到master進(jìn)程的進(jìn)程號ID。獲取方式簡單介紹兩個,

·通過ps -ef | grep nginx;

·在講解nginx的./configure的配置參數(shù)的時候,有一個參數(shù)是--pid-path=PATH默認(rèn)是/usr/local/nginx/logs/nginx.pid,所以可以通過查看該文件來獲取nginx的master進(jìn)程ID.

(2)信號

信號

作用

TERM/INT 立即關(guān)閉整個服務(wù)
QUIT "優(yōu)雅"地關(guān)閉整個服務(wù)
HUP 重讀配置文件并使用服務(wù)對新配置項(xiàng)生效
USR1 重新打開日志文件,可以用來進(jìn)行日志切割
USR2 平滑升級到最新版的nginx
WINCH 所有子進(jìn)程不在接收處理新連接,相當(dāng)于給work進(jìn)程發(fā)送QUIT指令


調(diào)用命令為kill -signal PID

signal:即為信號;PID即為獲取到的master線程ID

1.發(fā)送TERM/INT信號給master進(jìn)程,會將Nginx服務(wù)立即關(guān)閉。

kill -TERM PID / kill -TERM `cat /usr/local/nginx/logs/nginx.pid`
kill -INT PID / kill -INT `cat /usr/local/nginx/logs/nginx.pid`

2.發(fā)送QUIT信號給master進(jìn)程,master進(jìn)程會控制所有的work進(jìn)程不再接收新的請求,等所有請求處理完后,在把進(jìn)程都關(guān)閉掉。

kill -QUIT PID / kill -TERM `cat /usr/local/nginx/logs/nginx.pid`

3.發(fā)送HUP信號給master進(jìn)程,master進(jìn)程會把控制舊的work進(jìn)程不再接收新的請求,等處理完請求后將舊的work進(jìn)程關(guān)閉掉,然后根據(jù)nginx的配置文件重新啟動新的work進(jìn)程

kill -HUP PID / kill -TERM `cat /usr/local/nginx/logs/nginx.pid`

4.發(fā)送USR1信號給master進(jìn)程,告訴Nginx重新開啟日志文件

kill -USR1 PID / kill -TERM `cat /usr/local/nginx/logs/nginx.pid`

5.發(fā)送USR2信號給master進(jìn)程,告訴master進(jìn)程要平滑升級,這個時候,會重新開啟對應(yīng)的master進(jìn)程和work進(jìn)程,整個系統(tǒng)中將會有兩個master進(jìn)程,并且新的master進(jìn)程的PID會被記錄在/usr/local/nginx/logs/nginx.pid而之前的舊的master進(jìn)程PID會被記錄在/usr/local/nginx/logs/nginx.pid.oldbin文件中,接著再次發(fā)送QUIT信號給舊的master進(jìn)程,讓其處理完請求后再進(jìn)行關(guān)閉

kill -USR2 PID / kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
kill -QUIT PID / kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`

6.發(fā)送WINCH信號給master進(jìn)程,讓master進(jìn)程控制不讓所有的work進(jìn)程在接收新的請求了,請求處理完后關(guān)閉work進(jìn)程。注意master進(jìn)程不會被關(guān)閉掉

kill -WINCH PID /kill -WINCH`cat /usr/local/nginx/logs/nginx.pid`

方式二:Nginx的命令行控制

此方式是通過Nginx安裝目錄下的sbin下的可執(zhí)行文件nginx來進(jìn)行Nginx狀態(tài)的控制,我們可以通過nginx -h來查看都有哪些參數(shù)可以用:

nginx命令控制

-?和-h:顯示幫助信息

-v:打印版本號信息并退出

-V:打印版本號信息和配置信息并退出

-t:測試nginx的配置文件語法是否正確并退出

-T:測試nginx的配置文件語法是否正確并列出用到的配置文件信息然后退出

-q:在配置測試期間禁止顯示非錯誤消息

-s:signal信號,后面可以跟 :

stop[快速關(guān)閉,類似于TERM/INT信號的作用]

quit[優(yōu)雅的關(guān)閉,類似于QUIT信號的作用]

reopen[重新打開日志文件類似于USR1信號的作用]

reload[類似于HUP信號的作用]

-p:prefix,指定Nginx的prefix路徑,(默認(rèn)為: /usr/local/nginx/)

-c:filename,指定Nginx的配置文件路徑,(默認(rèn)為: conf/nginx.conf)

-g:用來補(bǔ)充Nginx配置文件,向Nginx服務(wù)指定啟動時應(yīng)用全局的配置

將本頁面鏈接http://3rdspacecomics.com/news/20210716/143208.html發(fā)送給QQ:2217622915,免費(fèi)獲取上面課程全套視頻、筆記和源碼。



猜你喜歡:

Nginx使用教程:Nginx從入門到精通

Java中final關(guān)鍵字如何使用?

Java中volatile關(guān)鍵字有什么作用?

JDBC詳細(xì)教程與jdbc連接數(shù)據(jù)庫方法

黑馬程序員java開發(fā)培訓(xùn)課程

分享到:
在線咨詢 我要報名
和我們在線交談!