Chcę zatrzymać Nginx, ale tak się nie udaje.
$ sudo service nginx stop
Stopping nginx: [FAILED]
I nginx.conf
to określa miejsce, w którym nginx.pid ma linię.
# /etc/nginx/nginx.conf
pid /var/run/nginx.pid;
Ale nie ma nginx.pid
tego katalogu /var/run/
.
locate nginx.pid
pokazuje ten wynik.
/var/run/nginx.pid
/var/run/nginx.pid.oldbin
Ale po updatedb
tym nie ma dopasowania do wyszukiwania. Używam nginx / 1.4.4 w CentOS release 6.5 (Final)
.
Co powinienem zrobić, aby zatrzymać demona nginx?
Edytuj 2014/01/07
Jest to wyjście ps -ef | grep nginx
wydaje nginx demon wciąż działa.
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
I sudo service nginx restart
daje ten błąd. Myślę, że się nginx
nie uruchamia, bo stary wciąż żyje. I /var/log/nginx/error.log-2014017
zawiera również ten błąd.
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
lubsudo netstat -tlnp | grep nginx
.ps
polecenia.Odpowiedzi:
Polecę zatrzymać nginx, zabijając najpierw jego główny proces. Nginx nie został poprawnie zamknięty z tego powodu, że nie można go zatrzymać za pomocą skryptu inicjującego.
To pokaże PID głównego procesu nginx. Jak wspomniano powyżej:
Zabij to za pomocą
Sprawdź jeszcze raz, czy działa proces nginx lub czy port 80 jest zajęty. Jeśli zauważysz, że jakikolwiek proces jest powiązany z portem 80, Zidentyfikuj PID i sprawdź, czy można go zabić.
upewnij się, że system plików jest w porządku i możesz czytać / zapisywać w systemie plików / var. Następnie uruchom nginx
źródło
Problem
Dla mnie nazwa pliku pid była inna w tych dwóch plikach:
pid /var/run/nginx.pid;
PIDFile=/run/nginx.pid
Tych dwoje musi się zgadzać.
Naprawić:
Więc dostosowałem to w /usr/lib/systemd/system/nginx.service, a następnie:
Potem wyszło poprawnie.
źródło
/var/run/
znajduje się dowiązanie symboliczne/run/
Miałem ten problem, a bieganie
ps -ef | grep nginx
pokazywałoby mi pracowników, którzy będą się rozkręcać pomimo zabicia głównego procesu, jak sugeruje zaakceptowana odpowiedź:Więc moim rozwiązaniem tego było po prostu:
pkill nginx && service nginx restart
źródło
Mój problem polegał na tym, że
pid
podałem w dwóch różnych plikach conf. Po usunięciu jednego odwołania, a następnie usunięciu.pid
pliku i ponownym uruchomieniu Nginx, zaczął on zachowywać się normalnie.źródło
To wydaje się wskazywać, że nginx ulega awarii natychmiast, jeśli został uruchomiony wcześniej. Czy sprawdziłeś zawartość,
/var/log/nginx*
aby zobaczyć, co robi proces?EDYCJA: Ponadto, jeśli powiesz nam swój system operacyjny i wersję nginx, możemy udzielić bardziej szczegółowych odpowiedzi.
źródło
Potrzebuję więcej informacji, ale jestem pewien, że masz już inną uruchomiony serwer WWW niż instancję ngnix, którą chcesz, więc musisz ją znaleźć - błąd mówi, że port 80 jest używany, ale nie przez co
Spróbuj
netstat -tulpn
- szukasz wpisu pod adresem lokalnym, który kończy się na: 80 - poda ci także nazwę programu i PID, abyś mógł go zidentyfikować. Oto moja - korzystam z lighttpd i jest on pokazany w 3. linii.Zamknij poprawnie drugi serwer WWW (ponieważ jeśli odradza się na początku, normalne „zabijanie” może nie działać) i spróbuj uruchomić ngnix. W takim przypadku możesz / powinieneś edytować swoje skrypty init, aby zatrzymać uruchomienie innego serwera WWW lub dostosować jego konfigurację na innej mocy.
źródło
netstat -tulpn
pokazujetcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 19507/nginx
. Więc jakoś nginx zajął ten port. Ale jak powiedział sandeep, zabiłem proces Nginx, to działa. Doceniam twoją pomoc!Miałem podobny problem z Ubuntu 10.10 i skompilowaną wersją nginx działającą w / opt / nginx / sbin.
sprawdź oba pliki /opt/nginx/conf/nginx.conf i /etc/nginx/nginx.conf i sprawdź, czy pasują do siebie.
Dostosuj plik startowy /etc/init.d/nginx, aby pasował do testu lokalizacji nginx.pid, używając:
źródło
Aby zatrzymać nginx, sprawdź instrukcję, jak to zrobić
man nginx
.Domyślnym sposobem powinno być użycie sygnału stop przy pomocy
nginx -s stop
.To naprawdę powinno być takie proste. Twoje opcje to:
źródło