Nginx 无效的 PID 号
Posted
技术标签:
【中文标题】Nginx 无效的 PID 号【英文标题】:Nginx Invalid PID number 【发布时间】:2011-11-30 14:39:25 【问题描述】:我发出了 nginx -s stop,然后在尝试重新加载它时出现此错误。
[错误]:“/var/run/nginx.pid”中的无效PID号“”
那个 /var/run/nginx/pid 文件是空的 atm。
我需要做什么来修复它?
【问题讨论】:
【参考方案1】:nginx -s reload 仅用于告诉正在运行的 nginx 进程重新加载其配置。停止后,您没有正在运行的 nginx 进程向其发送信号。只需运行 nginx(可能使用 -c /path/to/config/file)
【讨论】:
在当前发行版的股票安装中,您可能希望使用启动脚本:sudo service nginx start
【参考方案2】:
在我的情况下,我通过启动服务解决了这个问题。
sudo /etc/init.d/nginx 启动
上面的命令将在 Debian/Ubuntu 中启动服务。如果有任何问题(如 Apache 在同一个端口监听)会报错
在这之后 nginx -s reload 将像魅力一样工作
【讨论】:
【参考方案3】:在我下载的最新版本(1.2.0)中没有“-s start”选项,它会说 nginx:无效选项:“-s start”
你可以通过
启动nginxsudo /etc/nginx/sbin/nginx
服务器将被启动,然后不会有任何无效的 pid number 错误。
【讨论】:
【参考方案4】:在我的情况下,nginx 被停止了(我假设崩溃了)。通过以下方式解决了问题:
service nginx status
nginx stop/waiting
service nginx start
nginx start/running, process 3535
然后 nginx -s reload 就像一个魅力。
我在 trusty 上使用 nginx/1.8.0。
【讨论】:
很奇怪 nginx 文档怎么没有包含这些命令。只需说“要启动 nginx,请运行可执行文件。”!!我不知道他们为什么不包括以下行:sudo service nginx start 【参考方案5】:为避免重启 nginx 造成停机,
ps aux | grep nginx
PID of nginx master process
echo PID > /var/run/nginx.pid
nginx -s reload
【讨论】:
如果which pgrep
不为空,则更简单的版本为pgrep 'nginx: master process' > /var/run/nginx.pid
,然后运行reload。【参考方案6】:
这将清除 ubuntu 16.04 及更高版本上的问题
sudo service nginx stop
您可能需要删除 pid 文件 nginx.pid
,其位置可能在文件 /etc/nginx/nginx.conf
中定义,查找类似行
cat /etc/nginx/nginx.conf | grep pid # see if pid file is defined
这一行可能存在于文件/etc/nginx/nginx.conf
pid /run/nginx.pid; # in file /etc/nginx/nginx.conf
如果 pid 文件确实存在,则立即删除它
ls -la /var/run/nginx/pid # this file may live elsewhere
ls -la /run/nginx.pid # on Ubuntu 16.04+
在 pid 文件被删除后,让我们启动 nginx
sudo service nginx start
ps -eaf|grep nginx # confirm its running
sudo nginx -t && sudo nginx -s reload # confirm config is OK
# typical output
# nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
# nginx: configuration file /etc/nginx/nginx.conf test is successful
sudo service nginx stop # issue stop
ps -eaf|grep nginx # confirm it actually stopped
现在理智已经恢复,你可以随意启动
【讨论】:
【参考方案7】:在 CentOS 7 上,我这样做了:
sudo systemctl start nginx
#Then check all things are OK
sudo systemctl status -l nginx
【讨论】:
【参考方案8】:如果nginx
进程被手动停止或被杀死,就会发生这种情况。
检查进程是否仍在运行:
sudo lsof -nP -iTCP:<port> | grep LISTEN
我在 mac 上,我重新安装了 nginx:
brew reinstall nginx
然后使用 brew 启动服务:
brew services start nginx
【讨论】:
以上是关于Nginx 无效的 PID 号的主要内容,如果未能解决你的问题,请参考以下文章
centos 7:nginx 无法从文件 /run/nginx.pid 读取 PID:无效参数
text nginx:[error]“/var/run/nginx.pid”中的无效PID编号“”
Nginx在reload时候报错invalid PID number
nginx跨域设置无效的解决办法 Nginx跨域设置Access-Control-Allow-Origin无效的解决办法