Erro TCPServer: Endereço já em uso - bind (2)


90

Jekyll estava funcionando bem para mim algumas semanas atrás, mas agora, de repente, ele me dá o seguinte erro:

TCPServer Error: Address already in use - bind(2)
INFO  WEBrick::HTTPServer#start: pid=7300 port=4000

 % lsof -i :4000
 <fetches nothing>

Mesmo que nada esteja sendo executado na porta. Abaixo estão os detalhes:

 % jekyll --version
Jekyll 0.11.2
 % where jekyll
/home/bhaarat/.rvm/gems/ruby-1.9.2-p290/bin/jekyll
/usr/bin/jekyll
 % ruby --version
ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]
 % rvm --version
rvm 1.10.0 

Aqui está o resultado

 % jekyll --server
Configuration from /home/bhaarat/blog/omnipresent.github.com/_config.yml
Auto-regenerating enabled: /home/bhaarat/blog/omnipresent.github.com -> /home/bhaarat/blog/omnipresent.github.com/_site
[2012-04-21 13:46:40] regeneration: 38 files changed
[2012-04-21 13:46:40] INFO  WEBrick 1.3.1
[2012-04-21 13:46:40] INFO  ruby 1.9.2 (2011-07-09) [i686-linux]
[2012-04-21 13:46:40] WARN  TCPServer Error: Address already in use - bind(2)
[2012-04-21 13:46:40] INFO  WEBrick::HTTPServer#start: pid=7382 port=4000

Sei que o endereço não está em uso e provavelmente o jekyll está corrompido por algum outro motivo, mas apresentando esse erro. Quais são minhas opções? Também tentei reinstalar.


Como exatamente você sabe que o endereço não está em uso?
Sergio Tulentsev

Estou tentando lsof -i :<port number>e a mesma coisa está acontecendo em uma caixa diferente
Onipresente

O que acontece se você especificar uma porta alternativa?
Mark Thomas,

infelizmente, a mesma coisa. Qual é a melhor maneira de remover completamente o jekyll e reinstalá-lo.
Onipresente

Se você usou Ruby gem para instalar, você deve conseguir desinstalar com gem uninstall jekyll. Se você não instalou com gem para sobrescrever a versão existente. Você tentou acessar a porta com seu navegador ou telnet para ver se isso fornece alguma ajuda?
Alan W. Smith,

Respostas:


224

Digite em seu terminal para descobrir o PID do processo que está usando a porta 3000:

$ lsof -wni tcp:3000

Em seguida, use o número na coluna PID para encerrar o processo:

$ kill -9 PID

19
Para quem está lendo isso, certifique-se de que no último comando, você substitua PIDpelo número real que você vê sob o PID. por exemplo, eu corrikill -9 11734
JGallardo

Observe que o problema também pode ser um aviso inofensivo proveniente de um problema de configuração do IPv6: o servidor primeiro se vincula a um endereço IPv4 + IPv6 de pilha dupla e, em seguida, tenta também se vincular a um endereço somente IPv6; e o último não funciona porque o endereço IPv6 já foi levado pelo socket dual-stack anterior.
jpetazzo de

17

Eu não estava qualificado para postar comentários. Então, acrescentei uma nova resposta.

Eu encontrei esse problema no Mac OS X 10.10.3. E eu nunca tinha instalado / usado o Jekyll antes. Não consegui iniciar o servidor jekyll com o número de porta padrão 4000. O motivo era que a porta era a mesma que o NoMachine usava. Com

$ sudo lsof -wni tcp:4000

Nota: A execução deste comando sem sudonão terá saída.

Eu vi esta saída:

COMMAND PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
nxd     449   nx    3u  IPv4 0x8d22************      0t0  TCP *:terabase (LISTEN)
nxd     449   nx    4u  IPv6 0x8d22************      0t0  TCP *:terabase (LISTEN)

A porta 4000 foi ocupada por nxd, que foi o processo iniciado pela NoMachine. E

$ sudo kill -9 449

não funcionaria, porque o processo nxd do NoMachine continuaria reiniciando, com um novo PID.

Portanto, eu tive que:

  • Mudei a porta do meu servidor jekyll no site _config.ymlpara outra poupada. Anexei a linha abaixo a _config.ymle funcionou.

    port: 3000 # change server port to 3000

ou

  • Porta nxd padrão do NoMachine alterada ou Desinstalar NoMachine

Obrigado, eu não conseguia descobrir o que era terabase até que me deparei com esta resposta.
Highway of Life

10

Ctrl-Znão encerra um programa, mas o suspende e o envia para segundo plano. Você pode retomar o programa com o comando "fg". Para realmente encerrá-lo, use Ctrl-C.

A mensagem de erro real parece ser falsa e pode ser ignorada. Estou recebendo a mesma mensagem de erro "endereço em uso", mas jekyll funciona bem de qualquer maneira na porta esperada.


Também estou recebendo a mensagem de erro, mas posso executar meu site em: 4000
joshuahornby10

3

Eu encontrei esse problema recentemente.

Experimentei todos os métodos citados acima, e até reiniciei meu computador, mas ainda não consegui resolver !!! Então eu removi o jekyll e instalei uma nova versão, simplesmente funcionou.

gem uninstall jekyll & gem install jekyll (talvez você precise de privilégios de superusuário).

Se você realmente se irrita com bugs semelhantes, vale a pena tentar este método sb ...



0

Verifique se você não tem outro terminal aberto no qual já está executando um servidor. Se for esse o caso, faça um CTRL-C para desligar o servidor e isso irá liberar a porta / endereço.


0

Primeiro você precisa encontrar o PID do processo que está usando a porta 3000:

 $ps -ef

Resultado assim:

1003      4953  2614  0 08:51 pts/0    00:00:00 -bash
1003      5634     1  0 08:56 pts/0    00:00:00 spring server | moviestore | started 2 hours ago                                           
1003      5637  5634  0 08:56 ?        00:00:01 spring app    | moviestore | started 2 hours ago | development mode                                                              
1003      6078  4953  0 09:03 pts/0    00:00:03 puma 3.6.0 (tcp://localhost:3000) [moviestore]              
1003      6117  2614  0 09:03 pts/1    00:00:00 -bash
root      6520     2  0 09:57 ?        00:00:00 [kworker/u8:2]
root      6936  1225  0 11:09 ?        00:00:00 [lightdm] <defunct>
1003      7084     1  0 11:09 ?        00:00:00 /usr/bin/python /usr/share/apport/apport-gtk
1003      7475     1  0 11:10 ?        00:00:00 /usr/bin/python /usr/share/apport/apport-gtk
root      8739  1225  1 11:29 tty8     00:00:11 /usr/bin/X :1 -auth /var/run/lightdm/root/:1 -nolisten tcp vt8 -novtswitch
root      8853  1225  0 11:29 ?        00:00:00 lightdm --session-child 13 22
1002      8943     1  0 11:30 ?        00:00:00 /usr/bin/gnome-keyring-daemon --daemonize --login
1002      8954  8853  0 11:30 ?        00:00:00 gnome-session --session=ubuntu
1002      8992  8954  0 11:30 ?        00:00:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session gnome-session --session=ubuntu
1002      8995     1  0 11:30 ?        00:00:00 /usr/bin/dbus-launch --exit-with-session gnome-session --session=ubuntu
1002      8996     1  0 11:30 ?        00:00:00 //bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session
1002      9007  8954  0 11:30 ?        00:00:00 /usr/lib/gnome-settings-daemon/gnome-settings-daemon
1002      9015     1  0 11:30 ?        00:00:00 /usr/lib/gvfs/gvfsd
1002      9018  8954  1 11:30 ?        00:00:07 compiz
1002      9021     1  0 11:30 ?        00:00:00 /usr/lib/x86_64-linux-gnu/gconf/gconfd-2
1002      9028  8954  0 11:30 ?        00:00:00 /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1
1002      9029  8954  0 11:30 ?        00:00:01 nautilus -n
1002      9030  8954  0 11:30 ?        00:00:00 /usr/lib/gnome-settings-daemon/gnome-fallback-mount-helper
1002      9031  8954  0 11:30 ?        00:00:00 nm-applet
1002      9032  8954  0 11:30 ?        00:00:02 /opt/mTrac/mTrac
1002      9033  8954  0 11:30 ?        00:00:00 bluetooth-applet
1002      9045  9032  0 11:30 ?        00:00:00 /opt/mTrac/mTrac --type=zygote --no-sandbox
1002      9050     1  0 11:30 ?        00:00:00 /usr/lib/gvfs/gvfs-gdu-volume-monitor
1002      9054     1  0 11:30 ?        00:00:00 /usr/bin/pulseaudio --start --log-target=syslog
1002      9057     1  0 11:30 ?        00:00:00 /usr/lib/gvfs/gvfs-gphoto2-volume-monitor
1002      9062     1  0 11:30 ?        00:00:00 /usr/lib/gvfs/gvfs-afc-volume-monitor

aqui você pode ver :

1003      6078  4953  0 09:03 pts/0    00:00:03 puma 3.6.0 (tcp://localhost:3000) [moviestore]   

localhost: 3000 têm pid: 6078

matar esse processo por

$sudo kill 6078  

então corra

$rails s

-1

Gambiarra

em /_siteexecução:python -m SimpleHTTPServer 8080

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.