Я хочу остановить Nginx, но он так не работает.
$ sudo service nginx stop
Stopping nginx: [FAILED]
И nginx.conf
это определяет место nginx.pid есть строка.
# /etc/nginx/nginx.conf
pid /var/run/nginx.pid;
Но нет nginx.pid
в каталоге /var/run/
.
locate nginx.pid
показывает этот вывод.
/var/run/nginx.pid
/var/run/nginx.pid.oldbin
Но после не updatedb
найдется совпадений для поиска. Я использую nginx / 1.4.4 в CentOS release 6.5 (Final)
.
Что я должен сделать, чтобы остановить демон nginx?
Редактировать 2014/01/07
Это вывод ps -ef | grep nginx
, кажется, демон nginx все еще работает.
ironsand 17065 16933 0 15:55 pts/0 00:00:00 grep --color nginx
root 19506 1 0 2013 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
ironsand 19507 19506 0 2013 ? 00:00:25 nginx: worker process
И sudo service nginx restart
дает эту ошибку. Я думаю, что nginx
не запускается, потому что старый еще жив. И /var/log/nginx/error.log-2014017
содержит также эту ошибку.
Stopping nginx: [FAILED]
Starting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[FAILED]
ps -ef | grep nginx
илиsudo netstat -tlnp | grep nginx
.ps
команды.Ответы:
Я рекомендую остановить nginx, сначала убив его основной процесс. Nginx не выключен должным образом, возможно, из-за этого его нельзя остановить с помощью сценария инициализации.
Это покажет вам PID основного процесса nginx. Как вы упомянули выше:
Убей его, используя
Еще раз проверьте, запущен ли какой-либо процесс nginx или порт 80 занят. Если вы видите, что какой-либо процесс связан с портом 80, определите PID и проверьте, можно ли его уничтожить.
убедитесь, что с файловой системой все в порядке, и вы можете читать / записывать в / var файловую систему. Затем запустите nginx
источник
проблема
Для меня имя файла pid было разным в этих двух файлах:
pid /var/run/nginx.pid;
PIDFile=/run/nginx.pid
Эти два должны соответствовать.
Fix:
Поэтому я настроил его в /usr/lib/systemd/system/nginx.service, а затем сделал:
Тогда это подошло правильно.
источник
/var/run/
есть символическая ссылка/run/
У меня была эта проблема, и бег
ps -ef | grep nginx
показывал мне рабочих, которые продолжали набирать обороты, несмотря на то, что убивали мастер-процесс, как было предложено в принятом ответе:Поэтому мое решение исправить это было просто так:
pkill nginx && service nginx restart
источник
Моя проблема заключалась в том, что я
pid
указал в двух разных файлах conf. После того, как я удалил одну ссылку, затем удалил.pid
файл и снова запустил nginx, он начал работать нормально.источник
Похоже, это указывает на то, что nginx сразу падает, если он был запущен ранее. Вы проверили содержимое,
/var/log/nginx*
чтобы увидеть, что делает процесс?РЕДАКТИРОВАТЬ: Кроме того, если вы сообщите нам свою ОС и версию nginx, мы можем дать более подробные ответы.
источник
Мне нужно больше информации, чтобы быть уверенным, но, я полагаю, у вас уже работает другой веб-сервер, а не экземпляр ngnix, который вам нужен, поэтому вам нужно его найти - ошибка говорит о том, что порт 80 используется, но не что
Попробуйте
netstat -tulpn
- Вы ищете запись под локальным адресом, которая заканчивается на: 80 - это также даст вам имя программы и PID, чтобы вы могли ее идентифицировать. Вот мой - я использую lighttpd, и он показан на 3-й строке.Правильно завершите работу другого веб-сервера (поскольку, если он запускается с помощью upstart, обычное 'kill' может не сработать) и попробуйте запустить ngnix Если это так, вы можете / должны затем отредактировать свои сценарии инициализации, чтобы остановить запуск другого веб-сервера, или настроить его конфигурацию на другом уровне.
источник
netstat -tulpn
показываетtcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 19507/nginx
. Так что каким-то образом nginx занял этот порт. Но как сказал sandeep, я убил процесс nginx, тогда он работает. Я ценю вашу помощь!У меня была похожая проблема с Ubuntu 10.10 и скомпилированной версией nginx, работающей в / opt / nginx / sbin.
проверьте оба файла /opt/nginx/conf/nginx.conf и /etc/nginx/nginx.conf и убедитесь, что они совпадают.
Настройте /etc/init.d/nginx файл запуска, чтобы он соответствовал тесту местоположения nginx.pid, используя:
источник
Чтобы остановить nginx, проверьте руководство, как это сделать
man nginx
.По умолчанию следует использовать сигнал остановки с
nginx -s stop
.Должно быть так просто на самом деле. Ваши варианты:
источник