重新啟動nginx時nginx.pid檔案丟失怎麼辦

2020-10-19 21:01:17

一、nginx的停止操作

(推薦教學:)

停止操作是通過向nginx程序傳送訊號來實現的,具體錯誤資訊如下:

[[email protected] ~]# /usr/local/nginx/sbin/nginx -s reload
nginx: [error] open() 「/usr/local/nginx/logs/nginx.pid」 failed (2: No such file or directory)

步驟1:

查詢nginx主程序號,程式碼如下:

ps -ef | grep nginx

在程序列表裡 面找master程序,它的編號就是主程序號了。

步驟2:

傳送訊號,從容停止Nginx:

kill -QUIT 主程序號

快速停止Nginx:

kill -TERM 主程序號

強制停止Nginx,程式碼如下:

pkill -9 nginx

另外, 若在nginx.conf設定了pid檔案存放路徑則該檔案存放的就是Nginx主程序號,如果沒指定則放在nginx的logs目錄下。有了pid檔案,就不用先查詢Nginx的主程序號,而直接向Nginx傳送訊號了,命令程式碼如下:

kill -訊號型別 ‘/usr/nginx/logs/nginx.pid’

二、nginx的平滑重新啟動

如果更改了設定可以向Nginx傳送訊號,平滑重新啟動。

平滑重新啟動命令程式碼如下:

kill -HUP 住進稱號或程序號檔案路徑

或使用

/usr/nginx/sbin/nginx -s reload

注意,修改了組態檔後最好先檢查一下修改過的組態檔是否正確,以免重新啟動後Nginx出現錯誤影響伺服器穩定執行。判斷Nginx設定是否正確命令程式碼如下:

nginx -t -c /usr/nginx/conf/nginx.conf

或者

/usr/nginx/sbin/nginx -t

三、nginx的平滑升級

如果伺服器正在執行的Nginx要進行升級、新增或刪除模組時,我們需 要停掉伺服器並做相應修改,這樣伺服器就要在一段時間內停止服務,Nginx可以在不停機的情況下進行各種升級動作而不影響伺服器執行。

步驟1:

若升級Nginx程式,先用新程式替換舊程式檔案,編譯安裝的話新程式直接編譯到Nginx安裝目錄中。

步驟2:執行命令

kill -USR2 舊版程式的主程序號或程序檔名

此時舊的Nginx主程序將會把自己的程序檔案改名為.oldbin,然後執行新版 Nginx。新舊Nginx會同市執行,共同處理請求。

這時要逐步停止舊版 Nginx,輸入命令:

kill -WINCH 舊版主程序號

慢慢舊的工作程序就都會隨著任務執行完畢而退出,新版的Nginx的工作程序會逐漸取代舊版 工作程序。

可以決定使用新版還是恢復到舊版。

四、不過載設定啟動新/舊工作程序

kill -HUP 舊/新版主程序號

從容關閉舊/新程序

kill -QUIT 舊/新主程序號

如果此時報錯,提示還有程序沒有結束就用下面命令先關閉舊/新工作程序,再關閉主程序號:

kill -TERM 舊/新工作程序號

注意在阿里雲伺服器上,程序性的 nginx -s stop後再次啟動nginx -s reload ,總是會報錯誤

nginx: [error] open() 「/alidata/server/nginx/logs/nginx.pid」 failed (2: No such file or directory)

原因:nginx程序殺死後pid丟失了,下一次再開啟nginx -s reload時無法啟動,重灌可以解決問題。也可以參考一下英文的解釋:

issued a nginx -s stop and after that I got this error when trying to reload it.
[error]: invalid PID number 「」 in 「/var/run/nginx.pid」
That /var/run/nginx/pid file is empty atm.
What do I need to do to fix it?
nginx -s reload is only used to tell a running nginx process to reload its config. After a stop,
you don’t have a running nginx process to send a signal to.
Just run nginx (possibly with a -c /path/to/config/file)

使用方法,程式碼如下:

nginx -c /path/to/config/file

Linux系統執行命令如下:

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

以上就是重新啟動nginx時nginx.pid檔案丟失怎麼辦的詳細內容,更多請關注TW511.COM其它相關文章!