yum update後 systemctl restart nginx.serviceにて「Can’t open PID file /var/run/nginx.pid (yet?) after start: Too many levels of symbolic links」エラー発生

投稿者: | 2020年12月25日

ページコンテンツ

エラー内容


yum update後 systemctl restart nginx.serviceにて下記エラーが発生しました。

Can’t open PID file /var/run/nginx.pid (yet?) after start: Too many levels of symbolic links

nginxが利用できなくなり、本サイトも表示できなくなっていましたので、エラー解析と対策を行いました。

原因分析


systemctlではなく、下記コマンドで直接、nginxを起動することはできたので、systemctlにてエラーが発生しているように思われました。

/usr/sbin/nginx -c /etc/nginx/nginx.conf

対策


nginxのサービス設定「nginx.service」に問題がありそうなので、nginxのサービス設定「nginx.service」を確認してみました。

vi /usr/lib/systemd/system/nginx.service

「/var/run/nginx.pid」はシムリンクで、実態は「run/nginx.pid」となりますので。「/var/run/nginx.pid」を「run/nginx.pid」に変更してみます。

[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=/run/nginx.pid
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/sh -c “/bin/kill -s HUP $(/bin/cat /run/nginx.pid)”
ExecStop=/bin/sh -c “/bin/kill -s TERM $(/bin/cat /run/nginx.pid)”

[Install]
WantedBy=multi-user.target

変更結果を確認するため、デーモンを再読み込みします。

systemctl daemon-reload

nginxを起動したところ、起動に成功しました。

systemctl start nginx.service

CentOS起動時に、自動でnginxが起動するように、下記設定をsystemctlにて行う。

systemctl enable nginx.service

関連記事


Linux以外のIT技術については、下記サイトにアクセスしてください。
気まぐれSE研究所(https://www.se-lab.yokohama/)