Мне потребовалось некоторое время, чтобы выяснить это, но с момента недавнего обновления я не могу остановить Nginx ни на одном из моих серверов Ubuntu 12.04 или Ubuntu 14.04.
Я бегу 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.
Это кажется Вами, nginx сервер является дескриптором новомодным процессом.
Взгляд в/etc/init папке и проверка, если нет файла, который обрабатывает nginx.
grep -r nginx /etc/init
Затем редактирование этот файл, и удаляют respawn
опция в файле конфигурации.
Можно остановить процесс nginx с помощью sudo nginx -s quit
, Вы видите в /etc/init/nginx
У меня была та же проблема, когда я хотел обновить свои letsencrypt сертификаты с временным веб-сервером certbot
: каждый раз я остановил nginx с
service stop nginx
после нескольких секунд, которые он перезапустил автоматически поэтому, когда он пришел к обслуживанию доказательства моего домена certbot, порт 443 уже использовался повторно порожденным nginx.
я действительно спешил фиксировать это, таким образом, я запустил действительно грязное обходное решение, но оно работало:
while true; do service nginx stop; sleep 2; done
Теперь я смог обновить свои сертификаты и узнать позже, как остановить nginx окончательно более корректным способом ;)