nginx -s quit nginx: [error] invalid PID number "" in "/var/run/nginx.pid"
请教这是怎么一回事?
1
unoxunoy 2020-04-25 12:43:47 +08:00 via iPhone 1
用 ps 查询 nginx 的 pid 号,再将 pid 号写到提示的.pid 文件中;或者查到 pid 号后直接 kill
|
2
BrettD 2020-04-25 12:47:23 +08:00 via iPhone
字面意思是从 /var/run/nginx.pid 这个文件读取 nginx 的 PID 读到的是空白的
|
3
dot2017 2020-04-25 12:48:00 +08:00
我一般直接 killall nginx……
|
4
airyland 2020-04-25 12:48:36 +08:00 via iPhone
善用搜索引擎
|
5
endlesslove OP @unoxunoy vi /var/run/nginx.pid 这个文件改如何写,我查询到 15480
|
6
gesse 2020-04-25 13:10:51 +08:00
你是不是系统里有多个 nginx ?
|
7
Guys 2020-04-25 13:10:57 +08:00 1
@endlesslove pid 文件是记录 nginx 启动的进程号的,你查到进程号了,只须 kill -9 15480
|
8
gesse 2020-04-25 13:11:54 +08:00
package manager(如 apt-get install) 安装里一个, 又用编译等方法安装了一个?
|
9
endlesslove OP @gesse 我没有编译安装过,只有 apt-get install 一个
|
10
endlesslove OP ps -ax | grep nginx
查看了有一个 master process 和 nginx: worker process 是否是这两个东西重叠了,请教大家帮助! |
11
WuMengDi 2020-04-25 13:46:13 +08:00
1,两个 nginx 冲突了,
|
13
endlesslove OP 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 root@localhost:~# 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 请教大家,着否这里需要设置过才能关机? |
14
PbCopy111 2020-04-25 17:02:16 +08:00
@endlesslove 我有个小白问题啊。。为啥不用 systemctl stop nginx 来停止呢?
|
15
endlesslove OP @PbCopy111 nginx -s quit nginx: [error] invalid PID number "" in "/var/run/nginx.pid" 返回的就是这样!
|
16
endlesslove OP ps -ef | grep nginx
显示依然在运行,不解,新手需要帮助 |
17
sss495088732 2020-04-25 17:38:57 +08:00
直接 kill 掉....我之前不知不觉起了十几个.
win 平台 |
18
movieatravelove 2020-04-25 17:51:24 +08:00 via Android
kill -9 pid 就完事了
|
19
0312birdzhang 2020-04-25 18:05:49 +08:00
1 楼正解。
也不知道是 nginx 的 bug 还是被误删了,ps 查到 pid 再 echo 到那个文件里就可以了。 |
20
PbCopy111 2020-04-25 18:14:56 +08:00
```
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``` |
21
also24 2020-04-25 18:18:11 +08:00
两件事:
1 、 现在先使用 ps -aux | grep nginx 找到 nginx master 的 PID,然后手动 kill 掉。 这一步也可以使用 1 楼的方法,将 pid 直接写进 /var/run/nginx.pid 文件。 2 、 检查你的 /var/run/nginx.pid 文件的权限,看 nginx 的启动用户是否有权限写入。 |
22
aaa5838769 2020-04-25 18:28:22 +08:00
killall
|
23
learningman 2020-04-25 20:02:09 +08:00
@PbCopy111 不一定写了 systemd 的配置
|
24
nicebird 2020-04-25 20:20:15 +08:00
就是没 pid 文件呗
|
25
sazima 2020-04-25 20:30:24 +08:00
pkill nginx
|
26
androidkily 2020-04-26 07:55:48 +08:00 via Android
改个 pid,或者手动创建
|
27
Tinyang 2020-04-26 08:39:30 +08:00
我在 centos 7 也遇到过,我是直接删 nginx.pid, 然后 kill 的
|
28
brader 2020-04-26 10:16:48 +08:00
你先看下 pid 文件里是什么内容,cat /var/run/nginx.pid
很有可能是这种情况,比如,pid 不存在于那个文件,或者 pid 文件里面存的 pid 是这样的:12345%, 他多了一个%号,然后命令就出错了 |
29
Aluhao 2020-04-26 10:57:39 +08:00
killall nginx
|
30
winzkh 2020-04-26 15:07:17 +08:00 via iPad
killall -9 nginx
|