web-dev-qa-db-ja.com

nginxサービスを停止できません

見つけるのに時間がかかりましたが、最近のアップデートのように、Ubuntu 12.04またはUbuntu 14.04サーバーでNginxを停止できません。

Sudo service nginx stopを実行し、nginx start/running, process 16178を取得します。

Sudo service nginx stopを再試行し、nginx start/running, process 16206を取得します。

プロセス番号がどのように変化するかに注意してください。

/var/log/syslogで理由がわかります:

Jun 11 11:57:51 kernel: [2318556.994508] init: nginx main process ended, respawning

NginxはSudo service nginx stopを実行するたびに再生成されます。完全に停止することはありません。

Ubuntuを更新して再起動し、ローカルのテストイメージにサーバーを再インストールしました(Puppetを使用しています)。何も違いはありません。また、これに関連するバグを無駄に検索しようとしました。

誰も私がこの問題を解決する方法を知っていますか? Sudo service nginx stopを実行し、結果としてすべてのnginxプロセスを停止できるようにしたいと思います。

4
href_

Nginxサーバーは、新興プロセスによって処理されているようです。

/ etc/initフォルダーを見て、nginxを処理するファイルがないかどうかを確認します。

grep -r nginx /etc/init

次に、このファイルを編集して、構成ファイルのrespawnオプションを削除します。

3
aklmie

Sudo nginx -s quitを使用してnginxプロセスを停止できます

/etc/init/nginxで確認できます

1
Kaung Yar Zar

certbotによって、一時的なWebサーバーを使用してletsencrypt証明書を更新したいとき、私は同じ問題を抱えていました:毎回、nginxを停止しました

service stop nginx

数秒後に自動的に再起動したため、ドメインcertbotの証明を提供する際に、再生成されたnginxによってポート443がすでに使用されていました。

私はこれを直そうと急いでいたので、本当に汚い回避策を始めましたが、うまくいきました:

while true; do service nginx stop; sleep 2; done

今、証明書を更新し、後で正しい方法でnginxを完全に停止する方法を見つけることができました;)

0
rubo77