nginx一行錯誤引起的思考

單獨拆分一篇小文章,貌似上一篇文章篇幅有點多,更多內容能夠見上一篇文章,答疑解惑之nginx,歡迎各位大佬去提出意見啊!!!nginx

針對macOs系統,咱們通常用Homebrew去安裝nginx,可是咱們執行nginx重啓命令有時候會遇到如下錯誤:設計模式

nginx: [error] open() "/usr/local/var/run/nginx.pid" failed (2: No such file or directory)
複製代碼

看字面大概意思是沒有nginx.pid文件,下面咱們進到/usr/local/var/run/目錄發現確實沒有這個文件。你們都知道通常解決辦法都是在終端執行下面的命令:bash

sudo nginx -c /usr/local/etc/nginx/nginx.conf
複製代碼

那爲何執行這個命令就有這個文件了呢?post

咱們都知道 nginx -c 命令是指定一個配置文件,當在終端執行完後發現不報錯了,咱們如今能夠看下這個文件的內容到底是什麼。ui

在終端執行下面的命令:spa

cat /usr/local/var/run/nginx.pid
複製代碼

查看該文件的內容,發現內容只有一行數字。設計

這個數字實際上是該進程的id,這個文件的做用是爲了防止啓動多個進程副本。3d

咱們能夠用ps -ef|grep nginx查看nginx的進程信息:code

能夠看到主進程的id跟上面文件內容是同樣的。

這個時候問題又出來了,爲何會有多個id?cdn

nginx遵循Master-Worker設計模式,是以多進程的方式來工做的,nginx在啓動後,會有一個master進程和多個worker進程,master進程主要用來管理worker進程(因此也能夠用kill -QUIT 主進程號等方法關閉nginx)。

當主進程存在時,nginx.pid文件就會存在,內容爲主進程id,當進程關掉後nginx.pid文件也就自動刪除了,因此須要咱們去指定配置文件。

更多內容能夠見上一篇文章,答疑解惑之nginx 🎉🎉🎉🎉🎉

相關文章
相關標籤/搜索