Je veux arrêter Nginx mais ça échoue comme ça.
$ sudo service nginx stop
Stopping nginx: [FAILED]
Et nginx.conf
cela définit la place de nginx.pid avoir une ligne.
# /etc/nginx/nginx.conf
pid /var/run/nginx.pid;
Mais il n'y a pas nginx.pid
dans le répertoire /var/run/
.
locate nginx.pid
montre cette sortie.
/var/run/nginx.pid
/var/run/nginx.pid.oldbin
Mais après updatedb
il n'y a pas de correspondance pour la recherche. J'utilise nginx / 1.4.4 dans CentOS release 6.5 (Final)
.
Que dois-je faire pour arrêter le démon nginx?
Edit 2014/01/07
Ceci est la sortie de ps -ef | grep nginx
, il semble que le démon nginx soit toujours en cours d'exécution.
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
Et sudo service nginx restart
donne cette erreur. Je pense nginx
ne pas commencer parce que le vieil est encore en vie Et /var/log/nginx/error.log-2014017
contient aussi cette erreur.
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
ousudo netstat -tlnp | grep nginx
.ps
commande.Réponses:
Je recommanderai d'arrêter nginx en supprimant d'abord son processus principal. Le nginx n’est pas arrêté correctement peut-être parce qu’il ne peut pas être arrêté à l’aide du script init.
Cela vous montrera le PID du processus maître nginx. Comme vous l'avez mentionné ci-dessus:
Tuez-le en utilisant
Vérifiez à nouveau si un processus nginx en cours d'exécution ou si le port 80 est occupé. Si un processus est lié au port 80, identifiez le PID et vérifiez s'il peut être tué.
assurez-vous que le système de fichiers est correct et que vous pouvez lire / écrire dans le système de fichiers / var. Puis lancez nginx
la source
Problème
Pour moi, le nom du fichier pid était différent dans ces deux fichiers:
pid /var/run/nginx.pid;
PIDFile=/run/nginx.pid
Ces deux doivent correspondre.
Réparer:
Alors je l'ai ajusté dans /usr/lib/systemd/system/nginx.service et ensuite:
Ensuite, il est venu correctement.
la source
/var/run/
trouve un lien symbolique de/run/
J'avais ce problème, et courir
ps -ef | grep nginx
me montrait des ouvriers qui continueraient à filer en dépit de la destruction du processus maître suggéré par la réponse acceptée:Donc, ma solution pour y remédier était simplement la suivante:
pkill nginx && service nginx restart
la source
Mon problème était que j'avais
pid
spécifié dans deux fichiers de configuration différents. Après avoir supprimé une référence, puis supprimé le.pid
fichier et relancé nginx, il a commencé à se comporter normalement.la source
Cela semble indiquer que nginx se bloque immédiatement s'il avait été démarré plus tôt. Avez-vous vérifié le contenu de
/var/log/nginx*
pour voir ce que fait le processus?EDIT: De plus, si vous nous indiquez votre système d’exploitation et votre version de nginx, nous pourrons vous donner des réponses plus détaillées.
la source
J'aurais besoin de plus d'informations pour en être sûr, mais je suppose que vous avez déjà un autre serveur Web en cours d'exécution plutôt que l'instance de ngnix que vous souhaitez vous-même. Vous devez donc le trouver. L'erreur indique que le port 80 est utilisé, mais pas par quoi
Essayez
netstat -tulpn
- Vous cherchez une entrée sous l’adresse locale qui se termine par: 80 - elle vous donnera également le nom du programme et le PID afin que vous puissiez l’identifier. Voici le mien - je cours lighttpd et il est montré sur la 3ème ligne.Arrêtez correctement l’autre serveur Web (car si son démarrage est imminent, un «kill» normal risque de ne pas fonctionner) et essayez de démarrer ngnix. Si c'est le cas, vous pouvez / devriez alors modifier vos scripts d'initialisation pour empêcher le démarrage de l'autre serveur Web ou ajuster sa configuration sur une autre source d'alimentation.
la source
netstat -tulpn
montretcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 19507/nginx
. Donc, d'une manière ou d'une autre, Nginx occupait ce port. Mais comme l'a dit Sandeep, j'ai tué le processus nginx, puis cela fonctionne. J'apprécie ton aide!J'ai eu un problème similaire avec Ubuntu 10.10 et une version compilée de nginx fonctionnant dans / opt / nginx / sbin.
vérifiez les fichiers /opt/nginx/conf/nginx.conf et /etc/nginx/nginx.conf et vérifiez qu'ils correspondent.
Ajustez le fichier de démarrage /etc/init.d/nginx pour qu'il corresponde au test d'emplacement nginx.pid à l'aide de:
la source
Pour arrêter nginx, consultez le manuel d'utilisation
man nginx
.Le moyen par défaut devrait être d'utiliser le signal d'arrêt avec
nginx -s stop
.Devrait être aussi simple que cela. Vos options sont:
la source