2012-04-21 13 views
81

Jekyll było dobrze działa na mnie kilka tygodni temu, ale teraz nagle to daje mi następujący błąd:tcpserver Błąd: już w użyciu Adres - bind (2)

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

% lsof -i :4000 
<fetches nothing> 

Choć nic nie jest uruchomiony Port. Poniżej znajdują się szczegóły:

% 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 

Oto wynik

% 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 

wiem, że adres nie jest w użyciu i Jekyll jest prawdopodobnie łamiąc z jakiegoś innego powodu, ale rzucanie tego błędu. Jakie są moje opcje? Próbowałem również ponownie zainstalować.

+0

Jak dokładnie wiesz, że adres nie jest używany? –

+0

Próbuję 'lsof -i: ' plus to samo dzieje się na innym polu – Omnipresent

+0

Co się stanie, jeśli podasz alternatywny port? –

Odpowiedz

197

Type to w terminalu, aby dowiedzieć się PID procesu, który używa portu 3000:

$ lsof -wni tcp:3000 

Następnie użyj liczby w kolumnie PID zabić proces:

$ kill -9 PID 
+17

Dla każdego, kto to czyta, upewnij się, że w ostatnim poleceniu zastępujesz 'PID' rzeczywistą liczbą, którą widzisz pod PID. na przykład, uruchomiłem 'kill -9 11734' – JGallardo

+0

Zauważ, że problem może być również nieszkodliwym ostrzeżeniem pochodzącym z konfiguracji IPv6: serwer najpierw łączy się z adresem IPv4 + IPv6 z dwoma stosami, a następnie próbuje się połączyć z adres IPv6; a drugi nie działa, ponieważ adres IPv6 jest już zajęty przez poprzednie gniazdo z dwoma stosami. – jpetazzo

+0

Dzięki ........... rozmowie z przyszłości =) ... to też mi pomogło. –

9

Ctrl-Z nie kończy programu, ale zawiesza go i wysyła na drugi plan. Możesz wznowić program za pomocą komendy "fg". Aby faktycznie go zakończyć, użyj Ctrl-C.

Rzeczywisty komunikat o błędzie wydaje się być fałszywy i można go zignorować. Otrzymuję ten sam komunikat o błędzie "adres w użyciu", ale jekyll i tak działa dobrze na oczekiwanym porcie.

+0

Otrzymuję również komunikat o błędzie, ale mogę uruchomić moją stronę: 4000 – joshuahornby10

4

Ostatnio napotkałem ten problem.

Wypróbowałem wszystkie wyżej wymienione metody, a nawet zrestartowałem komputer, ale nadal nie mogłem go rozwiązać !!! Potem usunąłem jekyll i zainstalowałem nową wersję, po prostu zadziałało.

gem uninstall jekyll & gem install jekyll (może potrzebujesz uprawnienia superużytkownika).

Jeśli naprawdę denerwują z podobnych błędów, metoda ta sb warto spróbować ...

0

obejść

w /_site Run: python -m SimpleHTTPServer 8080

0

sprawdzić, czy nie mieć otwarty inny terminal, w którym już uruchomiłeś serwer. W takim przypadku wykonaj CTRL-C, aby wyłączyć serwer, co spowoduje zwolnienie portu/adresu.

13

Nie zakwalifikowałem się do komentowania. Więc dodałem nową odpowiedź.

Napotkano ten problem w systemie Mac OS X 10.10.3. I nigdy wcześniej nie instalowałem/nie używam Jekylla. Nie mogłem uruchomić serwera jekyll z domyślnym numerem portu 4000. Powodem było to, że port był taki sam, jak ten używany przez NoMachine. Z wartością:

Uwaga: Uruchomienie tego polecenia bez sudo nie będzie mieć danych wyjściowych.

Widziałem ten wynik:

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) 

Port 4000 zostało zajęte przez nxd, który to proces rozpoczęty przez NoMachine. I

$ sudo kill -9 449 

nie będzie działać, ponieważ proces NXD NoMachine będzie zachować ponownym uruchomieniu z nowym PID.

Dlatego muszę albo:

  • zmienić swój port serwera Jekyll w witrynie _config.yml do drugiego oszczędził jeden. Dołączyłem linię poniżej do _config.yml i zadziałało.

    port: 3000 # change server port to 3000

lub

  • Domyślnym portem NXD Zmień NoMachine, albo Uninstall NoMachine
+0

To mi pomogło. Zmieniłem port. Dzięki! – ILikeTurtles

+0

Dzięki, nie mogłem dowiedzieć się, co to jest baza danych, dopóki nie natknąłem się na tę odpowiedź. –

0

Najpierw trzeba znaleźć PID procesu, który jest przy użyciu portu 3000:

$ps -ef 

wyjścia jak ten:

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 

tutaj można zobaczyć:

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

localhost: 3000 mają pid: 6078

zabić ten proces przez

$sudo kill 6078 

następnie uruchomić

$rails s 
Powiązane problemy