web-dev-qa-db-ja.com

nginxサーバーを停止しても、それに関連するプロセスが強制終了されないのはなぜですか?

このようにnginxをubuntu 12.04で停止すると、次のエラーが発生します。

$ Sudo service nginx stop
Stopping nginx: nginx.
$Sudo service nginx start
Starting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

this を使用して修正する必要があります。サービスを停止してもnginxプロセスが終了しないのはなぜですか?混乱しています!

5
bernie2436

デフォルトでは、start-stop-daemonはSIGTERMをnginxプロセスに送信します。停止処理を保証するものではありません。修正:ファイル/etc/init.d/nginxセクション "stop"文字列の変更

start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \

start-stop-daemon --stop --retry=TERM/30/KILL/5 --quiet --pidfile /var/run/$NAME.pid \

その修正は、SIGTERMがプロセスを停止しない場合にSIGKILL(kill -9)を送信します。

そして、pid-fileへのパスpid /var/run/nginx.pid;/etc/nginx/nginx.confおよびパス--pidfile /var/run/$NAME.pid/etc/init.d/nginx 同じだ。

6
mr_tron

システムにsystemdがある場合は、それを使用してサービスを終了します。ルートが必要になる場合があります。

systemctl kill nginx.service

詳細

2
user133203