單獨拆分一篇小文章,貌似上一篇文章篇幅有點多,更多內容能夠見上一篇文章,答疑解惑之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?cdn
nginx遵循Master-Worker設計模式,是以多進程的方式來工做的,nginx在啓動後,會有一個master進程和多個worker進程,master進程主要用來管理worker進程(因此也能夠用kill -QUIT 主進程號
等方法關閉nginx)。
當主進程存在時,nginx.pid文件就會存在,內容爲主進程id,當進程關掉後nginx.pid文件也就自動刪除了,因此須要咱們去指定配置文件。
更多內容能夠見上一篇文章,答疑解惑之nginx 🎉🎉🎉🎉🎉