Quiero detener Nginx pero falla así.
$ sudo service nginx stop
Stopping nginx: [FAILED]
Y nginx.conf
eso define el lugar de nginx.pid tiene una línea.
# /etc/nginx/nginx.conf
pid /var/run/nginx.pid;
Pero no hay nginx.pid
en el directorio /var/run/
.
locate nginx.pid
muestra esta salida
/var/run/nginx.pid
/var/run/nginx.pid.oldbin
Pero después updatedb
no hay coincidencia para la búsqueda. Estoy usando nginx / 1.4.4 in CentOS release 6.5 (Final)
.
¿Qué debo hacer para detener el demonio nginx?
Editar 2014/01/07
Esta es la salida de ps -ef | grep nginx
, parece que nginx daemon todavía se está ejecutando.
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
Y sudo service nginx restart
da este error. Creo que nginx
no puede comenzar porque el viejo todavía está vivo. Y /var/log/nginx/error.log-2014017
contiene también este error.
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
osudo netstat -tlnp | grep nginx
.ps
comando.Respuestas:
Recomendaré detener nginx matando primero su proceso maestro. El nginx no se apaga correctamente puede deberse a que no se puede detener con el script de inicio.
Esto le mostrará el PID del proceso maestro nginx. Como mencionaste anteriormente:
Mátalo usando
Verifique una vez más si hay algún proceso nginx ejecutándose o si el puerto 80 está ocupado. Si ve que algún proceso está vinculado al puerto 80, identifique el PID y verifique si se puede eliminar.
asegúrese de que el sistema de archivos esté bien y que pueda leer / escribir en el sistema de archivos / var. Entonces comience nginx
fuente
Problema
Para mí, el nombre del archivo pid era diferente en esos dos archivos:
pid /var/run/nginx.pid;
PIDFile=/run/nginx.pid
Esos dos necesitan coincidir.
Fijar:
Así que lo ajusté en /usr/lib/systemd/system/nginx.service y luego lo hice:
Entonces surgió correctamente.
fuente
/var/run/
hay un enlace simbólico de/run/
Tuve este problema, y correr
ps -ef | grep nginx
me mostraría trabajadores que seguirían girando, a pesar de matar el proceso maestro como lo sugiere la respuesta aceptada:Entonces, mi solución para solucionarlo fue simplemente esto:
pkill nginx && service nginx restart
fuente
Mi problema era que había
pid
especificado en dos archivos conf diferentes. Después de eliminar una referencia, luego eliminé el.pid
archivo y comencé a nginx nuevamente, comenzó a comportarse normalmente.fuente
Esto parece indicar que nginx se bloquea de inmediato, si se había iniciado antes. ¿Ha verificado el contenido de
/var/log/nginx*
para ver qué está haciendo el proceso?EDITAR: Además, si nos dice su sistema operativo y la versión de nginx, podemos darle respuestas más detalladas.
fuente
Necesitaría más información para estar seguro, pero supongo que ya tiene otro servidor web ejecutándose en lugar de la instancia de ngnix que desea, por lo que debe encontrarla: el error dice que el puerto 80 está en uso, pero no qué
Intente
netstat -tulpn
: está buscando una entrada en la dirección local que termine con: 80: esto también le dará el nombre del programa y el PID para que pueda identificarlo. Aquí está el mío: estoy ejecutando lighttpd y se muestra en la tercera línea.Apague el otro servidor web correctamente (ya que si se está originando en el arranque, una 'muerte' normal puede no funcionar) e intente iniciar ngnix. Si ese es el caso, puede / debe editar sus scripts de inicio para detener el inicio del otro servidor web, o ajustar su configuración en otra potencia.
fuente
netstat -tulpn
muestratcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 19507/nginx
. Entonces de alguna manera nginx ocupó ese puerto. Pero como dijo sandeep, maté el proceso nginx y luego funciona. ¡Aprecio tu ayuda!Tuve un problema similar con Ubuntu 10.10 y una versión compilada de nginx que se ejecuta en / opt / nginx / sbin.
compruebe los archivos /opt/nginx/conf/nginx.conf y /etc/nginx/nginx.conf y verifique que coincidan.
Ajuste el archivo de inicio /etc/init.d/nginx para que coincida con la prueba de ubicación nginx.pid usando:
fuente
Para detener nginx, consulte el manual de cómo hacerlo
man nginx
.La forma predeterminada debería ser utilizar la señal de parada con
nginx -s stop
.Debería ser así de simple realmente. Sus opciones son:
fuente