服务器问答

nginx 无法停止
0
2021-05-19 23:29:22
idczone

nginx -s quit nginx: [error] invalid PID number "" i国外服务器n "/var/run/nginx.pid"

请教这是怎么一回事?


用 ps 查询 nginx 的 pid 号,再将 pid 号写到提示的.pid 文件中;或者查到 pid 号后直接 kill

字面意思是从 /var/run/nginx.pid 这个文件读取 nginx 的 PID 读到的是空白的

我一般直接 killall nginx……

善用搜索引擎

vi /var/run/nginx.pid 这个文件改如何写,我查询到 15480

你是不是系统里有多个 nginx ?

pid 文件是记录 nginx 启动的进程号的,你查到进程号了,只须 kill -9 15480

package manager(如 apt-get install) 安装里一个, 又用编译等方法安装了一个?

我没有编译安装过,只有 apt-get install 一个

ps -ax | grep nginx
查看了有一个 master process 和 nginx: worker process
是否是这两个东西重叠了,请教大家帮助!

1,两个 nginx 冲突了,

2,nginx 压根就没起来

cat /lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
[email&cat /etc/systemd/system/multi-user.target.wants/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
请教大家,着否这里需要设置过才能关机?

我有个小白问题啊。。为啥不用 systemctl stop nginx 来停止呢?

nginx -s quit nginx: [error] invalid PID number "" in "/var/run/nginx.pid" 返回的就是这样!

ps -ef | grep nginx
显示依然在运行,不解,新手需要帮助

直接 kill 掉....我之前不知不觉起了十几个.
win 平台

kill -9 pid 就完事了

1 楼正解。
也不知道是 nginx 的 bug 还是被误删了,ps 查到 pid 再 echo 到那个文件里就可以了。

```
mkdir /etc/systemd/system/nginx.service.d
printf "[Service]\nExecStartPost=/bin/sleep 0.1\n" \
> /etc/systemd/system/nginx.service.d/override.conf
systemctl daemon-reload
```

```systemctl restart nginx```

两件事:
1 、 现在先使用 ps -aux | grep nginx 找到 nginx master 的 PID,然后手动 kill 掉。
这一步也可以使用 1 楼的方法,将 pid 直接写进 /var/run/nginx.pid 文件。
2 、 检查你的 /var/run/nginx.pid 文件的权限,看 nginx 的启动用户是否有权限写入。

killall

不一定写了 systemd 的配置

就是没 pid 文件呗

pkill nginx

改个 pid,或者手动创建

我在 centos 7 也遇到过,我是直接删 nginx.pid, 然后 kill 的

你先看下 pid 文件里是什么内容,cat /var/run/nginx.pid
很有可能是这种情况,比如,pid 不存在于那个文件,或者 pid 文件里面存的 pid 是这样的:12345%,
他多了一个%号,然后命令就出错了

killall nginx

killall -9 nginx

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服