解决 NGINX 启动报错 PID 文件不可读

分类:Linux 评论: 0

使用 NGINX 官方源安装,启动程序发现 Systemd 中存在报错。

报错

错误如下

● nginx.service - nginx - high performance web server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2019-08-19 10:16:54 CST; 13min ago
     Docs: http://nginx.org/en/docs/
 Main PID: 1714 (nginx)
   CGroup: /system.slice/nginx.service
           ├─1714 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
           └─1715 nginx: worker process

Aug 19 10:16:53 domain.com systemd[1]: Stopped nginx - high performance web server.
Aug 19 10:16:53 domain.com systemd[1]: Starting nginx - high performance web server...
Aug 19 10:16:54 domain.com systemd[1]: PID file /var/run/nginx.pid not readable (yet?) after start.
Aug 19 10:16:54 domain.com systemd[1]: Started nginx - high performance web server.

原因

这是因为 NGX 启动时 PID 文件并未产生,导致文件无法读取,因此产生如下报错

systemd[1]: PID file /var/run/nginx.pid not readable (yet?) after start.

解决

知道问题如何产生,自然就有了解决办法。在守护单元中添加如下语句即可,作用是在执行可执行文件前等待 0.1s 。

ExecStartPost=/bin/sleep 0.1

提示:编辑 /usr/lib/systemd/system/nginx.service 即可。可在 systemctl 命令中看到守护单元文件的位置。

修改后需要重载单元,否则会产生如下警告。

Warning: nginx.service changed on disk. Run 'systemctl daemon-reload' to reload units.
# systemctl daemon-reload

即可修复此问题。

附录

参考链接

回复