Error: Can’t open PID file /var/run/nginx。pid (yet?) after start: Too many levels of symbolic links
現象:
Nginx啟動時卡住,無法自動執行完啟動命令,顯示下一個命令提示符
可透過systemctl status nginx -l命令檢視nginx詳細狀態資訊
或直接檢視/var/log/messages資訊
systemd: Starting nginx - high performance web server。。。 systemd: Can‘t open PID file /var/run/nginx。pid (yet?) after start: Too many levels of symbolic links
解決方法1
檢查目錄 /var/run 是否為軟連結 (symbolic link) 到/run目錄
# ls -ld /var/runlrwxrwxrwx。 1 root root 6 Sep 14 2020 /var/run -> 。。/run
同時也檢查下目錄 /run 是否也是軟連結
# ls -ld /rundrwxr-xr-x 24 root root 780 Oct 28 06:20 /run
檢查nginx配置中的pid路徑:
# grep -ir pid /etc/nginx /etc/nginx/nginx。conf:pid /var/run/nginx。pid;
建立軟連結時採用的是相對路徑,所以才會產生這樣的錯誤,解決方式是採用絕對路徑建立軟連結
# mv /var/run /var/run_orig && ln-s /run /var/run && ls-ld /var/run
解決方法2
檢查nginx配置中的pid路徑:
# grep -ir pid /etc/nginx/etc/nginx/nginx。conf:pid /var/run/nginx。pid;
找到配置檔案nginx。conf中的pid行
# pid /var/run/nginx。pid;
變更為
pid /run/nginx。pid;
使用sed命令替換pid路徑
sed -i ’s/pid /var/run/nginx。pid/pid /run/nginx。pid/‘ /etc/nginx/nginx。conf
編輯nginx。service
# vim /lib/systemd/system/nginx。service
變更pid路徑
PIDFile=/var/run/nginx。pid
變更為
PIDFile=/run/nginx。pid
應用修改
# systemctl daemon-reload
然後重啟服務
# systemctl restart nginx
最後檢視下服務狀態
# systemctl status nginx。service● nginx。service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx。service; disabled; vendor preset: disabled) Active: active (running) since Wed 2021-10-27 23:12:02 CST; 7h ago Docs: http://nginx。org/en/docs/ Process: 1724 ExecStop=/bin/sh -c /bin/kill -s TERM $(/bin/cat /run/nginx。pid) (code=exited, status=0/SUCCESS) Process: 1325 ExecReload=/bin/sh -c /bin/kill -s HUP $(/bin/cat /run/nginx。pid) (code=exited, status=0/SUCCESS) Process: 1729 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx。conf (code=exited, status=0/SUCCESS) Main PID: 1730 (nginx) CGroup: /system。slice/nginx。service ├─1730 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx。conf ├─1731 nginx: worker process ├─1732 nginx: worker process ├─1733 nginx: worker process └─1734 nginx: worker processOct 27 23:12:02 my202108112 systemd[1]: Starting nginx - high performance web server。。。Oct 27 23:12:02 my202108112 systemd[1]: Started nginx - high performance web server。
注意:這個問題不僅會影響 nginx,還會影響 mysql 或 fail2ban 以及其他服務。