Erreur TCPServer: Adresse déjà utilisée - bind (2)

90

Jekyll fonctionnait bien pour moi il y a quelques semaines, mais maintenant, tout d'un coup, cela me donne l'erreur suivante:

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

 % lsof -i :4000
 <fetches nothing>

Même si rien ne fonctionne sur le port. Voici les détails:

 % 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 

Voici la sortie

 % 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

Je sais que l'adresse n'est pas utilisée et jekyll est probablement en panne pour une autre raison, mais en lançant cette erreur. Quelles sont mes options? J'ai également essayé de réinstaller.

Omniprésent
la source
Comment savez-vous exactement que l'adresse n'est pas utilisée?
Sergio Tulentsev
J'essaye lsof -i :<port number>et la même chose se passe sur une boîte différente
Omniprésent
Que se passe-t-il si vous spécifiez un autre port?
Mark Thomas
malheureusement, la même chose. Quelle est la meilleure façon de supprimer complètement jekyll et de le réinstaller.
Omniprésent le
Si vous avez utilisé Ruby gem pour l'installation, vous devriez pouvoir désinstaller avec gem uninstall jekyll. Si vous ne l'avez pas peut-être installé avec gem pour écraser la version existante. Avez-vous essayé de toucher le port avec votre navigateur ou telnet pour voir si cela vous aide?
Alan

Réponses:

224

Tapez ceci dans votre terminal pour connaître le PID du processus qui utilise le port 3000:

$ lsof -wni tcp:3000

Ensuite, utilisez le nombre dans la colonne PID pour arrêter le processus:

$ kill -9 PID
Naoise doré
la source
19
À toute personne lisant ceci, assurez-vous que dans la dernière commande, vous remplacez PIDpar le nombre réel que vous voyez sous le PID. par exemple, j'ai courukill -9 11734
JGallardo
Notez que le problème peut également être un avertissement inoffensif provenant d'un problème de configuration IPv6: le serveur se lie d'abord à une adresse IPv4 + IPv6 à double pile, puis il essaie également de se lier à une adresse IPv6 uniquement; et ce dernier ne fonctionne pas car l'adresse IPv6 est déjà prise par le précédent socket dual-stack.
jpetazzo
17

Je n'étais pas qualifié pour publier un commentaire. J'ai donc ajouté une nouvelle réponse.

J'ai rencontré ce problème sur Mac OS X 10.10.3. Et je n'avais jamais installé / utilisé Jekyll auparavant. Je n'ai pas pu démarrer le serveur jekyll avec son numéro de port par défaut 4000. La raison était que le port était le même que celui utilisé par NoMachine. Avec

$ sudo lsof -wni tcp:4000

Remarque: l'exécution de cette commande sans sudoaucune sortie.

J'ai vu cette sortie:

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)

Le port 4000 était occupé par nxd, ce qui était le processus lancé par NoMachine. Et

$ sudo kill -9 449

ne fonctionnerait pas, car le processus nxd de NoMachine continuerait de redémarrer, avec un nouveau PID.

Par conséquent, je devais soit:

  • J'ai changé le port de mon serveur jekyll sur le site _config.ymlen un autre épargné. J'ai ajouté la ligne ci-dessous _config.ymlet cela a fonctionné.

    port: 3000 # change server port to 3000

ou

  • Modification du port nxd par défaut de NoMachine ou désinstallation de NoMachine
Fonzie
la source
Merci, je ne pouvais pas comprendre ce qu'était la terabase jusqu'à ce que je tombe sur cette réponse.
Highway of Life
10

Ctrl-Zne met pas fin à un programme, mais le suspend et l'envoie en arrière-plan. Vous pouvez reprendre le programme avec la commande "fg". Pour y mettre fin, utilisez Ctrl-C.

Le message d'erreur réel semble être faux et peut être ignoré. J'obtiens le même message d'erreur "adresse en cours d'utilisation" mais jekyll fonctionne bien de toute façon au port attendu.

Kevin
la source
Je reçois également le message d'erreur mais je peux exécuter mon site: 4000
joshuahornby10
3

J'ai rencontré ce problème récemment.

J'ai essayé toutes les méthodes mentionnées ci-dessus, et même redémarré mon ordinateur, mais je n'ai toujours pas pu le résoudre !!! Ensuite, j'ai supprimé le jekyll et installé une nouvelle version, cela a juste fonctionné.

gem uninstall jekyll & gem install jekyll (peut-être avez-vous besoin de privilèges de super utilisateur).

Si vous êtes vraiment ennuyé par des bogues similaires, cette méthode sb vaut la peine d'être essayée ...

wfwei
la source
1

nous pouvons utiliser la commande fuser

fuser -k 3000/tcp

Avinash Kumar Singh
la source
0

Vérifiez que vous n'avez pas d'autre terminal ouvert sur lequel vous exécutez déjà un serveur. Si tel est le cas, faites un CTRL-C pour arrêter le serveur, et cela libérera le port / l'adresse.

Harvey
la source
0

Vous devez d'abord trouver le PID du processus qui utilise le port 3000:

 $ps -ef

Sortie comme ceci:

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

içi vous pouvez voir :

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

localhost: 3000 ont pid: 6078

tuer ce processus en

$sudo kill 6078  

puis courir

$rails s
Manoj Datt
la source
-1

solution de contournement

dans /_site cours:python -m SimpleHTTPServer 8080

Arvind
la source