3
nginx 修改配置文件后,重启的时候出现了,这个提示。 `nginx: [error] invalid PID number "" in "/tmp/nginx.pid"` 。 意思是说 不能在文件`/tmp/nginx.pid`中找到有效的 PID(进程ID) 。解决的办法有两种,第一kill掉nginx 主进程,然后启动nginx 。 第二: 把nginx的主进程的pid写入 nginx.pid文件,然后正常的重启。

第一种方法杀掉nginx主进程,然后重启

# 重启前一定要先检查,配置文件是否正确,没有问题再重启
nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

# 关掉nginx 的所有进程
killall nginx

# 重新启动 nginx
nginx

第二种方法把nginx的进程号重新写入 nginx.pid 中,然后正常重启

# 首先找到nginx进程 pid
ps aux | grep "nginx: master" | grep -v pts | awk '{print $2;}'

# 或者直接写入
#需要注意的是, nginx.pid 的文件的路径,不同的配置,可能路径是不同的。 可以从 nginx.conf 的主配置文件中获得。
echo `ps aux | grep "nginx: master" | grep -v pts | awk '{print $2;}'` > /tmp/nginx.pid

# 然后重启
nginx -s reload

找原因

nginx 重启的时候,需要知道,自身的PID是多少,而这个值是写在 nginx.pid 中,如果这个文件的值被修改或者删除,就会出现问题。这个值是可以被修改的,如果把里面的值修改成其他进程的PID,用root账号重启nginx的时候,拥有该PID的进程一样会被kill掉。

杭州蘇小小
178 声望12 粉丝

我是一名 WEB前端 开发者不断在前端这条路上努力拼搏着。我喜欢代码的逻辑有序性,每一行代码都有其不同的作用,所有的代码加起来就可以让用户能愉快的体验我的产品。我喜欢研究,遇到难题我不退缩,我相信我可以...