2012-04-21 17 views
81

Jekyll estaba trabajando muy bien para mí unas semanas, pero ahora, de repente, me da el siguiente error:TCPServer Error: la dirección ya está en uso - bind (2)

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

% lsof -i :4000 
<fetches nothing> 

A pesar de que no se está ejecutando en el puerto. A continuación se presentan los detalles:

% 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 

Aquí está la salida

% 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 

Sé que la dirección no está en uso y Jekyll es probablemente rompiendo por alguna otra razón, pero tirar ese error. ¿Cuáles son mis opciones? Intenté volver a instalar también.

+0

¿Cómo sabe exactamente que la dirección no está en uso? –

+0

estoy intentando 'lsof -i: ' más lo mismo está sucediendo en una caja diferente – Omnipresent

+0

¿Qué ocurre si especifica un puerto alternativo? –

Respuesta

197

Tipo de esto en su terminal para encontrar el PID del proceso que está utilizando el puerto 3000:

$ lsof -wni tcp:3000 

A continuación, utilice el número de la columna PID para matar el proceso:

$ kill -9 PID 
+17

Para cualquiera que lea esto, asegúrese de que en el último comando, sustituya 'PID' con el número real que ve debajo del PID. por ejemplo, ejecuté 'kill -9 11734' – JGallardo

+0

Tenga en cuenta que el problema también puede ser una advertencia inofensiva que proviene de un problema de configuración de IPv6: el servidor primero se une a una IPv4 + IPv6 de doble pila, y luego intenta unirse a una dirección solo IPv6; y el último no funciona porque la dirección IPv6 ya está tomada por el socket anterior de doble pila. – jpetazzo

+0

Gracias ........... hablando del futuro =) ... esto también me ayudó. –

9

Ctrl-Z no finaliza un programa, sino que lo suspende y lo envía a segundo plano. Puede reanudar el programa con el comando "fg". Para terminarlo, use Ctrl-C.

El mensaje de error real parece ser falso y se puede ignorar. Recibo el mismo mensaje de error "dirección en uso" pero jekyll funciona bien de todos modos en el puerto esperado.

+0

También recibo el mensaje de error pero puedo ejecutar mi sitio fuera: 4000 – joshuahornby10

4

He encontrado este problema recientemente.

Probé todo el método mencionado anteriormente, e incluso reinicié mi computadora, pero todavía no podía resolverlo !!! Luego eliminé el jekyll e instalé una nueva versión, simplemente funcionó.

gem uninstall jekyll & gem install jekyll (tal vez necesite privilegios de superusuario).

Si realmente se molesta con los insectos similares, este método SB es la pena intentarlo ...

0

trabajo alrededor

en /_site de ejecución: python -m SimpleHTTPServer 8080

0

Compruebe que no lo hace tener otra terminal abierta donde ya está ejecutando un servidor. Si ese es el caso, realice un CTRL-C para apagar el servidor, y eso liberará el puerto/dirección.

13

No he calificado para publicar comentarios. Entonces agregué una nueva respuesta.

Encontré este problema en Mac OS X 10.10.3. Y nunca antes había instalado/usado Jekyll. No pude iniciar el servidor de jekyll con su número de puerto predeterminado 4000. La razón era que el puerto era el mismo que el utilizado por NoMachine. Con

$ sudo lsof -wni tcp:4000 

Nota: Al ejecutar este comando sin sudo tendrá ninguna salida.

vi esta salida:

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) 

El puerto 4000 fue ocupada por nxd, que es el proceso iniciado por NoMachine. Y

$ sudo kill -9 449 

no va a funcionar, porque el proceso de nxd NoMachine mantendrá reiniciar, con un nuevo PID.

Por lo tanto, he ya sea a:

  • cambiar mi puerto del servidor Jekyll en el sitio _config.yml a otro librado una. Agregué la siguiente línea al _config.yml y funcionó.

    port: 3000 # change server port to 3000

o

  • puerto de Cambio NoMachine predeterminado nxd o desinstalar NoMachine
+0

Esto me ayudó. Cambié el puerto. ¡Gracias! – ILikeTurtles

+0

Gracias, no pude averiguar qué era la terabase hasta que tropecé con esta respuesta. –

0

En primer lugar es necesario encontrar PID del proceso que está utilizando el puerto 3000:

$ps -ef 

salida como esta:

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 

aquí se puede ver:

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

localhost: 3000 tienen pid: 6078

matar a ese proceso por el

$sudo kill 6078 

continuación, ejecute

$rails s 
Cuestiones relacionadas