首頁  >  文章  >  運維  >  重啟nginx時nginx.pid檔案遺失怎麼辦

重啟nginx時nginx.pid檔案遺失怎麼辦

王林
王林轉載
2020-10-19 17:31:574974瀏覽

重啟nginx時nginx.pid檔案遺失怎麼辦

一、nginx的停止操作

(推薦教學:nginx教學

停止操作是透過向nginx進程發送訊號來實現的,具體錯誤訊息如下:

[root@yoodb.com ~]# /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檔案遺失怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除