Eu quero parar o Nginx, mas ele falha assim.
$ sudo service nginx stop
Stopping nginx: [FAILED]
E nginx.conf
isso define o lugar de nginx.pid tem uma linha.
# /etc/nginx/nginx.conf
pid /var/run/nginx.pid;
Mas não há nginx.pid
no diretório /var/run/
.
locate nginx.pid
mostra esta saída.
/var/run/nginx.pid
/var/run/nginx.pid.oldbin
Mas depois updatedb
não há correspondência para a pesquisa. Estou usando o nginx / 1.4.4 in CentOS release 6.5 (Final)
.
O que devo fazer para parar o daemon nginx?
Editar 07/01/2014
Isso é resultado ps -ef | grep nginx
, parece que o daemon nginx ainda está em execução.
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
E sudo service nginx restart
dá esse erro. Eu acho que nginx
não começa porque o antigo ainda está vivo. E /var/log/nginx/error.log-2014017
contém também esse erro.
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
comando.Respostas:
Eu recomendarei parar o nginx matando o processo mestre primeiro. O nginx não está desligado corretamente pode ser por isso não pode ser parado usando o script init.
Isso mostrará o processo PID do nginx master. Como você mencionou acima:
Mate-o usando
Verifique mais uma vez se existe algum processo nginx em execução ou se a porta 80 está ocupada. Se você vir algum processo vinculado à porta 80, identifique o PID e verifique se ele pode ser eliminado.
verifique se o sistema de arquivos está correto e se você pode ler / gravar no sistema de arquivos / var. Então inicie o nginx
fonte
Problema
Para mim, o nome do arquivo pid era diferente nesses dois arquivos:
pid /var/run/nginx.pid;
PIDFile=/run/nginx.pid
Esses dois precisam combinar.
Consertar:
Então, ajustei-o em /usr/lib/systemd/system/nginx.service e depois fiz:
Então surgiu corretamente.
fonte
/var/run/
existe um link simbólico de/run/
Eu tinha esse problema e a execução
ps -ef | grep nginx
me mostraria trabalhadores que continuariam girando, apesar de matar o processo principal, conforme sugerido pela resposta aceita:Então, minha solução para corrigi-lo foi simplesmente esta:
pkill nginx && service nginx restart
fonte
Meu problema era que eu havia
pid
especificado em dois arquivos conf diferentes. Depois que removi uma referência, excluí o.pid
arquivo e iniciei o nginx novamente, que começou a se comportar normalmente.fonte
Isso parece indicar que o nginx está travando imediatamente, se tivesse sido iniciado anteriormente. Você verificou o conteúdo
/var/log/nginx*
para ver o que o processo está fazendo?EDIT: Além disso, se você nos informar seu sistema operacional e versão do nginx, podemos fornecer respostas mais detalhadas.
fonte
Eu precisaria de mais informações para ter certeza, mas acho que você já tem outro servidor Web em execução, em vez da instância do ngnix que deseja, portanto, é necessário encontrá-lo - o erro diz que a porta 80 está em uso, mas não por o que
Tente
netstat -tulpn
- Você está procurando uma entrada no endereço local que termine com: 80 - isso também fornecerá o nome do programa e o PID para que você possa identificá-lo. Aqui está o meu - eu estou executando o lighttpd e é mostrado na terceira linha.Encerre o outro servidor da Web corretamente (já que, se for iniciado, um 'kill' normal pode não funcionar) e tente iniciar o ngnix. Se for esse o caso, você pode / deve editar seus scripts init para interromper a inicialização do outro servidor da Web ou ajustar sua configuração em outro poder.
fonte
netstat -tulpn
mostratcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 19507/nginx
. Então, de alguma forma, o nginx ocupou essa porta. Mas como o sandeep disse, eu matei o processo nginx e ele funciona. Eu aprecio sua ajuda!Eu tive um problema semelhante com o Ubuntu 10.10 e uma versão compilada do nginx em execução em / opt / nginx / sbin.
verifique os arquivos /opt/nginx/conf/nginx.conf e /etc/nginx/nginx.conf e verifique se eles correspondem.
Ajuste o arquivo de inicialização /etc/init.d/nginx para corresponder ao teste de localização nginx.pid usando:
fonte
Para parar o nginx, verifique o manual de como fazê-lo
man nginx
.A maneira padrão deve ser usar o sinal de parada com
nginx -s stop
.Na verdade, deveria ser tão simples assim. Suas opções são:
fonte