重啟nginx時nginx.pid文件丟失怎么辦

重啟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

以上就是重啟

? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享