Ich möchte Nginx stoppen, aber es schlägt so fehl.
$ sudo service nginx stop
Stopping nginx: [FAILED]
Und nginx.conf
das definiert Ort von nginx.pid haben eine Linie.
# /etc/nginx/nginx.conf
pid /var/run/nginx.pid;
Aber es gibt keine nginx.pid
im Verzeichnis /var/run/
.
locate nginx.pid
zeigt diese Ausgabe.
/var/run/nginx.pid
/var/run/nginx.pid.oldbin
Aber nachdem updatedb
es keine Übereinstimmung für die Suche gibt. Ich verwende Nginx / 1.4.4 in CentOS release 6.5 (Final)
.
Was soll ich tun, um den Nginx-Daemon zu stoppen?
Edit 2014/01/07
Dies ist eine Ausgabe von ps -ef | grep nginx
, anscheinend läuft der Nginx-Daemon noch.
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
Und sudo service nginx restart
gibt diesen Fehler. Ich glaube nginx
, der Start scheitert, weil der Alte noch lebt. Und /var/log/nginx/error.log-2014017
enthält auch diesen Fehler.
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
oder überprüfensudo netstat -tlnp | grep nginx
.ps
Befehls hinzu.Antworten:
Ich empfehle, Nginx zu stoppen, indem Sie zuerst den Master-Prozess beenden. Das nginx wird möglicherweise nicht ordnungsgemäß heruntergefahren, da es mit dem init-Skript nicht gestoppt werden kann.
Dies zeigt Ihnen die PID des Nginx-Master-Prozesses. Wie du oben erwähnt hast:
Töte es mit
Überprüfen Sie erneut, ob ein Nginx-Prozess ausgeführt wird oder Port 80 belegt ist. Wenn Sie feststellen, dass ein Prozess an Port 80 gebunden ist, identifizieren Sie die PID und prüfen Sie, ob sie beendet werden kann.
Stellen Sie sicher, dass das Dateisystem in Ordnung ist und Sie in das Dateisystem / var lesen / schreiben können. Dann Nginx starten
quelle
Problem
Für mich war der PID-Dateiname in diesen beiden Dateien unterschiedlich:
pid /var/run/nginx.pid;
PIDFile=/run/nginx.pid
Diese beiden müssen zusammenpassen.
Fix:
Also habe ich es in /usr/lib/systemd/system/nginx.service angepasst und dann getan:
Dann kam es richtig.
quelle
/var/run/
ist ein Symlink von/run/
Ich hatte dieses Problem, und das Laufen
ps -ef | grep nginx
würde mir zeigen, dass sich die Arbeiter weiter drehen, obwohl der Master-Prozess abgebrochen wurde, wie in der akzeptierten Antwort vorgeschlagen:Also meine Lösung war es einfach , dies zu beheben:
pkill nginx && service nginx restart
quelle
Mein Problem war, dass ich
pid
in zwei verschiedenen conf-Dateien angegeben hatte. Nachdem ich einen Verweis entfernt hatte, löschte ich die.pid
Datei und startete nginx erneut. Es begann sich normal zu verhalten.quelle
Dies scheint darauf hinzudeuten, dass nginx sofort abstürzt, wenn es früher gestartet wurde. Haben Sie den Inhalt von überprüft, um
/var/log/nginx*
zu sehen, was der Prozess tut?EDIT: Wenn Sie uns auch Ihr Betriebssystem und Ihre Version von nginx mitteilen, können wir detailliertere Antworten geben.
quelle
Ich würde mehr Informationen benötigen, um sicherzugehen, aber ich vermute, Sie haben bereits einen anderen Webserver, der ausgeführt wird, anstatt die Instanz von ngnix, die Sie selbst haben möchten. Sie müssen sie also finden - der Fehler besagt, dass Port 80 verwendet wird, aber nicht von Was
Versuchen Sie
netstat -tulpn
- Sie suchen nach einem Eintrag unter der lokalen Adresse, der auf 80 endet - hier werden Ihnen auch der Programmname und die PID angezeigt, damit Sie sie identifizieren können. Hier ist meins - ich verwende lighttpd und es wird in der 3. Zeile angezeigt.Fahren Sie den anderen Webserver ordnungsgemäß herunter (da ein normaler Kill möglicherweise nicht funktioniert, wenn der Startvorgang beendet ist) und versuchen Sie, ngnix zu starten. In diesem Fall können / sollten Sie Ihre Init-Skripte bearbeiten, um den Start des anderen Webservers zu unterbinden, oder die Konfiguration auf einem anderen Computer anpassen.
quelle
netstat -tulpn
zeigttcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 19507/nginx
. Irgendwie belegte Nginx diesen Port. Aber wie Sandeep sagte, ich habe den Nginx-Prozess getötet, dann funktioniert es. Ich schätze Ihre Hilfe!Ich hatte ein ähnliches Problem mit Ubuntu 10.10 und einer kompilierten Version von nginx, die unter / opt / nginx / sbin ausgeführt wurde.
Überprüfen Sie die Dateien /opt/nginx/conf/nginx.conf und /etc/nginx/nginx.conf und stellen Sie sicher, dass sie übereinstimmen.
Passen Sie die Startdatei /etc/init.d/nginx an die Position von nginx.pid an, indem Sie Folgendes verwenden:
quelle
Um Nginx zu stoppen, lesen Sie das Handbuch
man nginx
.Standardmäßig sollte das Stoppsignal mit verwendet werden
nginx -s stop
.Sollte eigentlich so einfach sein. Ihre Möglichkeiten sind:
quelle