Errore TCPServer: indirizzo già in uso - bind (2)


90

Jekyll funzionava bene per me poche settimane fa, ma ora all'improvviso mi dà il seguente errore:

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

 % lsof -i :4000
 <fetches nothing>

Anche se sulla porta non è in esecuzione nulla. Di seguito sono riportati i dettagli:

 % 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 

Ecco l'output

 % 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

So che l'indirizzo non è in uso e probabilmente jekyll si sta interrompendo per qualche altro motivo, ma genera quell'errore. Quali sono le mie opzioni? Ho provato anche a reinstallare.


Come sai esattamente che l'indirizzo non è in uso?
Sergio Tulentsev

Sto provando lsof -i :<port number>e la stessa cosa sta accadendo su una scatola diversa
Onnipresente

Cosa succede se specifichi una porta alternativa?
Mark Thomas

purtroppo la stessa cosa. Qual è il modo migliore per rimuovere completamente jekyll e reinstallarlo.
Onnipresente

Se hai usato Ruby gem per l'installazione, dovresti essere in grado di disinstallare con gem uninstall jekyll. Se non hai installato con gem, forse sovrascrivi la versione esistente. Hai provato a premere la porta con il tuo browser o telnet per vedere se questo fornisce aiuto?
Alan W. Smith,

Risposte:


224

Digita questo nel tuo terminale per scoprire il PID del processo che utilizza la porta 3000:

$ lsof -wni tcp:3000

Quindi, usa il numero nella colonna PID per terminare il processo:

$ kill -9 PID

19
A chiunque legga questo, assicurati che nell'ultimo comando, sostituisci PIDcon il numero effettivo che vedi sotto il PID. ad esempio, ho corsokill -9 11734
JGallardo

Si noti che il problema può anche essere un avviso innocuo proveniente da un problema di configurazione IPv6: il server prima si collega a un indirizzo IPv4 + IPv6 dual-stack, quindi tenta anche di collegarsi a un indirizzo solo IPv6; e quest'ultimo non funziona perché l'indirizzo IPv6 è già preso dal precedente socket dual-stack.
jpetazzo

17

Non ero qualificato per pubblicare commenti. Quindi ho aggiunto una nuova risposta.

Ho riscontrato questo problema su Mac OS X 10.10.3. E non avevo mai installato / utilizzato Jekyll prima. Non sono stato in grado di avviare il server jekyll con il numero di porta predefinito 4000. Il motivo era che la porta era la stessa di NoMachine. Con

$ sudo lsof -wni tcp:4000

Nota: l'esecuzione di questo comando senza sudonon avrà alcun output.

Ho visto questo output:

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)

La porta 4000 era occupata da nxd, che era il processo avviato da NoMachine. E

$ sudo kill -9 449

non funzionerebbe, perché il processo nxd di NoMachine continuerebbe a riavviarsi, con un nuovo PID.

Pertanto, ho dovuto:

  • Ho cambiato la mia porta del server jekyll nel sito _config.ymlcon un altro risparmiato. Ho aggiunto la riga sotto a _config.ymle ha funzionato.

    port: 3000 # change server port to 3000

o

  • Modificata la porta nxd predefinita di NoMachine o Disinstalla NoMachine

Grazie, non sono riuscito a capire cosa fosse terabase finché non sono incappato in questa risposta.
Highway of Life

10

Ctrl-Znon termina un programma, ma piuttosto lo sospende e lo invia in background. È possibile riprendere il programma con il comando "fg". Per terminarlo effettivamente, usa Ctrl-C.

Il messaggio di errore effettivo sembra essere fasullo e può essere ignorato. Ricevo lo stesso messaggio di errore "indirizzo in uso" ma jekyll funziona comunque bene alla porta prevista.


Ricevo anche il messaggio di errore ma posso eseguire il mio sito disattivato: 4000
joshuahornby10

3

Ho incontrato questo problema di recente.

Ho provato tutti i metodi sopra menzionati e ho persino riavviato il mio computer, ma non sono riuscito a risolverlo !!! Quindi ho rimosso il jekyll e ho installato una nuova versione, ha funzionato.

gem uninstall jekyll & gem install jekyll (forse hai bisogno del privilegio di super utente).

Se sei davvero infastidito da bug simili, vale la pena provare questo metodo sb ...



0

Verifica di non avere un altro terminale aperto su cui stai già eseguendo un server. In tal caso, eseguire CTRL-C per arrestare il server e questo libererà la porta / indirizzo.


0

Per prima cosa devi trovare il PID del processo che utilizza la porta 3000:

 $ps -ef

Output come questo:

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

qui puoi vedere:

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

localhost: 3000 hanno pid: 6078

uccidere quel processo da

$sudo kill 6078  

quindi corri

$rails s

-1

aggirare

in /_siteesecuzione:python -m SimpleHTTPServer 8080

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.