› NGINX
› NGINX Trac
› 3rd Party Modules
› Security Advisories
› CHANGES
› OpenResty
› ngx_lua
› Tengine
在线学习资源
› NGINX 开发从入门到精通
NGINX Modules
› ngx_echo
endlesslove
V2EX  ›  NGINX

nginx 无法停止

  •  
  •   endlesslove · Apr 25, 2020 · 6384 views
    This topic created in 2390 days ago, the information mentioned may be changed or developed.

    nginx -s quit nginx: [error] invalid PID number "" in "/var/run/nginx.pid"

    请教这是怎么一回事?

    30 replies  •  2020-04-26 15:07:17 +08:00
    unoxunoy
    unoxunoy
    Apr 25, 2020 via iPhone❤️1
    1
    用 ps 查询 nginx 的 pid 号,再将 pid 号写到提示的.pid 文件中;或者查到 pid 号后直接 kill
    BrettD
    BrettD
    Apr 25, 2020 via iPhone
    2
    字面意思是从 /var/run/nginx.pid 这个文件读取 nginx 的 PID 读到的是空白的
    dot2017
    dot2017
    Apr 25, 2020
    3
    我一般直接 killall nginx……
    airyland
    airyland
    Apr 25, 2020 via iPhone
    4
    善用搜索引擎
    endlesslove
    endlesslove
    OP
    Apr 25, 2020
    5
    @unoxunoy vi /var/run/nginx.pid 这个文件改如何写,我查询到 15480
    gesse
    gesse
    Apr 25, 2020
    6
    你是不是系统里有多个 nginx ?
    Guys
    Guys
    Apr 25, 2020❤️1
    7
    @endlesslove pid 文件是记录 nginx 启动的进程号的,你查到进程号了,只须 kill -9 15480
    gesse
    gesse
    Apr 25, 2020
    8
    package manager(如 apt-get install) 安装里一个, 又用编译等方法安装了一个?
    endlesslove
    endlesslove
    OP
    Apr 25, 2020
    9
    @gesse 我没有编译安装过,只有 apt-get install 一个
    endlesslove
    endlesslove
    OP
    Apr 25, 2020
    10
    ps -ax | grep nginx

    查看了有一个 master process 和 nginx: worker process

    是否是这两个东西重叠了,请教大家帮助!
    WuMengDi
    WuMengDi
    Apr 25, 2020
    11
    1,两个 nginx 冲突了,
    WuMengDi
    WuMengDi
    Apr 25, 2020
    12
    @WuMengDi 2,nginx 压根就没起来
    endlesslove
    endlesslove
    OP
    Apr 25, 2020
    13
    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

    请教大家,着否这里需要设置过才能关机?
    PbCopy111
    PbCopy111
    Apr 25, 2020
    14
    @endlesslove 我有个小白问题啊。。为啥不用 systemctl stop nginx 来停止呢?
    endlesslove
    endlesslove
    OP
    Apr 25, 2020
    15
    @PbCopy111 nginx -s quit nginx: [error] invalid PID number "" in "/var/run/nginx.pid" 返回的就是这样!
    endlesslove
    endlesslove
    OP
    Apr 25, 2020
    16
    ps -ef | grep nginx
    显示依然在运行,不解,新手需要帮助
    cocowind
    cocowind
    Apr 25, 2020
    17
    直接 kill 掉....我之前不知不觉起了十几个.
    win 平台
    movieatravelove
    movieatravelove
    Apr 25, 2020 via Android
    18
    kill -9 pid 就完事了
    1daydayde
    1daydayde
    Apr 25, 2020
    19
    1 楼正解。
    也不知道是 nginx 的 bug 还是被误删了,ps 查到 pid 再 echo 到那个文件里就可以了。
    PbCopy111
    PbCopy111
    Apr 25, 2020
    20
    ```
    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```
    also24
    also24
    Apr 25, 2020
    21
    两件事:
    1 、 现在先使用 ps -aux | grep nginx 找到 nginx master 的 PID,然后手动 kill 掉。
    这一步也可以使用 1 楼的方法,将 pid 直接写进 /var/run/nginx.pid 文件。

    2 、 检查你的 /var/run/nginx.pid 文件的权限,看 nginx 的启动用户是否有权限写入。
    MilkShake
    MilkShake
    Apr 25, 2020
    22
    killall
    learningman
    learningman
    Apr 25, 2020
    23
    @PbCopy111 不一定写了 systemd 的配置
    nicebird
    nicebird
    Apr 25, 2020
    24
    就是没 pid 文件呗
    sazima
    sazima
    Apr 25, 2020
    25
    pkill nginx
    androidkily
    androidkily
    Apr 26, 2020 via Android
    26
    改个 pid,或者手动创建
    Tinyang
    Tinyang
    Apr 26, 2020
    27
    我在 centos 7 也遇到过,我是直接删 nginx.pid, 然后 kill 的
    brader
    brader
    Apr 26, 2020
    28
    你先看下 pid 文件里是什么内容,cat /var/run/nginx.pid
    很有可能是这种情况,比如,pid 不存在于那个文件,或者 pid 文件里面存的 pid 是这样的:12345%,
    他多了一个%号,然后命令就出错了
    Alucns
    Alucns
    Apr 26, 2020
    29
    killall nginx
    winzkh
    winzkh
    Apr 26, 2020 via iPad
    30
    killall -9 nginx
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3762 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 72ms · UTC 04:03 · PVG 12:03 · LAX 20:03 · JFK 23:03
    ♥ Do have faith in what you're doing.