TCPServer-Fehler: Adresse wird bereits verwendet - bind (2)

90

Jekyll hat vor ein paar Wochen gut für mich gearbeitet, aber jetzt gibt es plötzlich den folgenden Fehler:

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

 % lsof -i :4000
 <fetches nothing>

Auch wenn auf dem Port nichts läuft. Unten 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 verwendet wird und Jekyll wahrscheinlich aus einem anderen Grund bricht, als diesen Fehler auszulösen. Was sind meine Optionen? Ich habe auch versucht, neu zu installieren.

Allgegenwärtig
quelle
Woher wissen Sie genau, dass die Adresse nicht verwendet wird?
Sergio Tulentsev
Ich versuche es lsof -i :<port number>und dasselbe passiert auf einer anderen Box
Omnipresent
Was passiert, wenn Sie einen alternativen Port angeben?
Mark Thomas
leider das gleiche. Was ist der beste Weg, um Jekyll vollständig zu entfernen und neu zu installieren.
Allgegenwärtig
Wenn Sie Ruby Gem zur Installation verwendet haben, sollten Sie in der Lage sein, mit zu deinstallieren gem uninstall jekyll. Wenn Sie nicht mit gem installiert haben, um die vorhandene Version zu überschreiben. Haben Sie versucht, den Port mit Ihrem Browser oder Telnet zu erreichen, um festzustellen, ob dies hilfreich ist?
Alan W. Smith

Antworten:

224

Geben Sie dies in Ihr Terminal ein, um die PID des Prozesses zu ermitteln, der den 3000-Port verwendet:

$ lsof -wni tcp:3000

Verwenden Sie dann die Nummer in der PID-Spalte, um den Prozess abzubrechen:

$ kill -9 PID
Naoise Golden
quelle
19
Stellen Sie für jeden, der dies liest, sicher, dass Sie im letzten Befehl PIDdie tatsächliche Nummer ersetzen , die Sie unter der PID sehen. Zum Beispiel lief ichkill -9 11734
JGallardo
Beachten Sie, dass das Problem auch eine harmlose Warnung sein kann, die von einem IPv6-Konfigurationsproblem herrührt: Der Server bindet zuerst an eine IPv4 + IPv6-Adresse mit zwei Stapeln und versucht dann auch, an eine reine IPv6-Adresse zu binden. und letzteres funktioniert nicht, da die IPv6-Adresse bereits vom vorherigen Dual-Stack-Socket übernommen wurde.
Jpetazzo
17

Ich war nicht qualifiziert, 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 hatte Jekyll noch nie installiert / benutzt. Ich konnte den Jekyll-Server nicht mit der Standardportnummer 4000 starten. Der Grund dafür war, dass der Port der von NoMachine verwendete war. Mit

$ sudo lsof -wni tcp:4000

Hinweis: Wenn Sie diesen Befehl ohne sudoausführen, wird keine Ausgabe ausgegeben.

Ich habe diese Ausgabe gesehen:

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 wurde von besetzt nxd, was der von NoMachine gestartete Prozess war. Und

$ sudo kill -9 449

würde nicht funktionieren, da der nxd-Prozess von NoMachine mit einer neuen PID immer wieder neu gestartet würde.

Deshalb musste ich entweder:

  • Mein Jekyll-Server-Port auf der Site wurde _config.ymlin einen anderen verschont. Ich habe die folgende Zeile angehängt _config.ymlund es hat funktioniert.

    port: 3000 # change server port to 3000

oder

  • Der Standard-NXD-Port von NoMachine wurde geändert oder NoMachine deinstalliert
Fonzie
quelle
Danke, ich konnte nicht herausfinden, was Terabase war, bis ich auf diese Antwort stieß.
Autobahn des Lebens
10

Ctrl-Zbeendet ein Programm nicht, sondern setzt es aus und sendet es in den Hintergrund. Sie können das Programm mit dem Befehl "fg" fortsetzen. Verwenden Sie, um es tatsächlich zu beenden Ctrl-C.

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

Kevin
quelle
Ich
erhalte
3

Ich habe dieses Problem kürzlich getroffen.

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

gem uninstall jekyll & gem install jekyll (Vielleicht brauchen Sie ein Superuser-Privileg).

Wenn Sie sich wirklich über ähnliche Fehler ärgern, ist diese jdn-Methode einen Versuch wert ...

wfwei
quelle
1

Wir können den Befehl fuser verwenden

fuser -k 3000/tcp

Avinash Kumar Singh
quelle
0

Stellen Sie sicher, dass kein anderes Terminal geöffnet ist, auf dem bereits ein Server ausgeführt wird. Wenn dies der Fall ist, drücken Sie STRG + C, um den Server herunterzufahren. Dadurch wird der Port / die Adresse freigegeben.

Harvey
quelle
0

Zuerst müssen Sie die PID des Prozesses ermitteln, der den 3000-Port verwendet:

 $ps -ef

Ausgabe wie folgt:

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 sieht man :

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öte diesen Prozess durch

$sudo kill 6078  

dann renne

$rails s
Manoj Datt
quelle
-1

herumarbeiten

im /_siteLauf:python -m SimpleHTTPServer 8080

Arvind
quelle