2012-04-21 10 views
81

Jekyll funktionierte gut für mich einige Wochen zurück, aber jetzt ganz plötzlich es mir die folgende Störung gibt:TCPServer Fehler: Adresse wird bereits verwendet - bind (2)

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

% lsof -i :4000 
<fetches nothing> 

Auch wenn nichts läuft der Hafen. Im Folgenden sind die Details:

% 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 

Hier ist die Ausgabe

% 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 

Ich weiß, dass die Adresse nicht in Gebrauch ist und jekyll wahrscheinlich aus einem anderen Grunde bricht, aber diesen Fehler zu werfen. Was sind meine Möglichkeiten? Ich habe versucht, auch neu zu installieren.

+0

Wie genau wissen Sie, dass die Adresse nicht verwendet wird? –

+0

Ich versuche 'lsof -i: ' plus same Sache passiert auf einer anderen Box – Omnipresent

+0

Was passiert, wenn Sie einen alternativen Port angeben? –

Antwort

197

Geben Sie diesen in Ihrem Terminal, um die PID des Prozesses herauszufinden, dass die 3000-Port ist mit:

$ lsof -wni tcp:3000 

Dann verwenden Sie die Nummer in der Spalte PID, den Prozess zu töten:

$ kill -9 PID 
+17

Stellen Sie sicher, dass Sie beim letzten Befehl "PID" durch die tatsächliche Zahl ersetzen, die Sie unter der PID sehen. Zum Beispiel habe ich 'kill -9 11734' ausgeführt. – JGallardo

+0

Beachten Sie, dass das Problem auch eine harmlose Warnung sein kann, die von einem IPv6-Konfigurationsproblem herrührt: Der Server bindet zuerst an eine Dual-Stack IPv4 + IPv6-Adresse und versucht dann, eine Verbindung herzustellen eine IPv6-Adresse; und letzteres funktioniert nicht, da die IPv6-Adresse bereits vom vorherigen Dual-Stack-Socket übernommen wurde. – jpetazzo

+0

Danke ........... aus der Zukunft reden =) ... das hat mir auch geholfen. –

9

Ctrl-Z beendet ein Programm nicht, sondern unterbricht es und sendet es in den Hintergrund. Sie können das Programm mit dem Befehl "fg" fortsetzen. Um es tatsächlich zu beenden, verwenden Sie Ctrl-C.

Die eigentliche Fehlermeldung scheint falsch zu sein und kann ignoriert werden. Ich bekomme die gleiche Fehlermeldung "Adresse in Verwendung", aber jekyll funktioniert trotzdem gut am erwarteten Port.

+0

Ich bekomme auch die Fehlermeldung, aber ich kann meine Website ausführen: 4000 – joshuahornby10

4

Ich habe dieses Problem in letzter Zeit begegnet.

Ich habe alle oben genannten Methoden ausprobiert, und sogar meinen Computer neu gestartet, aber immer noch nicht lösen konnte !!! Dann habe ich den Jekyll entfernt und eine neue Version installiert, es hat einfach funktioniert.

gem uninstall jekyll & gem install jekyll (vielleicht benötigen Sie Super User priviledge).

Wenn Sie wirklich mit ähnlichen Fehler ärgern, dann ist dies sb Methode einen Versuch wert ...

0

Arbeit um

in /_site Lauf: python -m SimpleHTTPServer 8080

0

Sie sicher, dass Sie dies nicht tun Öffnen Sie ein anderes Terminal, an dem Sie bereits einen Server betreiben. Wenn das der Fall ist, führen Sie CTRL-C aus, um den Server herunterzufahren, und das wird den Port/die Adresse freigeben.

13

Ich war nicht qualifiziert, um einen Kommentar zu schreiben. Also habe ich eine neue Antwort hinzugefügt.

Ich habe dieses Problem unter Mac OS X 10.10.3 festgestellt. Und ich habe Jekyll nie zuvor installiert/benutzt. Ich konnte jekyll server nicht mit der Standard-Port-Nummer 4000 starten. Der Grund war, dass der Port der selbe wie der von NoMachine war. Mit

$ sudo lsof -wni tcp:4000 

Hinweis: Das Ausführen dieses Befehls ohne sudo wird keine Ausgabe haben.

habe ich diesen Ausgang:

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) 

Der Port 4000 von nxd besetzt wurde, die den Prozess von NoMachine gestartet ist. Und

$ sudo kill -9 449 

wird nicht funktionieren, da NoMachine die NXD Prozess neu zu starten halten, mit einem neuen PID.

Deshalb habe ich entweder:

  • Ändern meiner jekyll-Server-Port auf der Website _config.yml zum anderen erspart ein. Ich habe die Zeile unten an _config.yml angefügt und es hat funktioniert.

    port: 3000 # change server port to 3000

oder

  • ändern NoMachine-Standard NXD Port oder Deinstallieren NoMachine
+0

Das hat mir geholfen. Ich habe den Hafen gewechselt. Vielen Dank! – ILikeTurtles

+0

Danke, ich konnte nicht herausfinden, was Terabase war, bis ich auf diese Antwort stolperte. –

0

Zuerst müssen Sie PID des Prozesses finden, die den 3000-Port ist:

$ps -ef 
siehe

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 

hier können Sie:

Ausgabe wie folgt

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

localhost: 3000 haben pid: 6078

töten, diesen Prozess durch

$sudo kill 6078 

dann laufen

$rails s 
Verwandte Themen