TCPServer Hatası: Adres zaten kullanımda - bağlama (2)


90

Jekyll birkaç hafta önce benim için iyi çalışıyordu ama şimdi birdenbire bana şu hatayı veriyor:

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

 % lsof -i :4000
 <fetches nothing>

Bağlantı noktasında hiçbir şey çalışmasa bile. Ayrıntılar aşağıdadır:

 % 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 

İşte çıktı

 % 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

Adresin kullanımda olmadığını biliyorum ve jekyll muhtemelen başka bir nedenle kırılıyor, ancak bu hatayı atıyor. Seçeneklerim neler? Yeniden yüklemeyi de denedim.


Adresin kullanımda olmadığını tam olarak nasıl biliyorsun?
Sergio Tulentsev

deniyorum lsof -i :<port number>artı aynı şey farklı bir kutuda oluyor
Omnipresent

Alternatif bir bağlantı noktası belirtirseniz ne olur?
Mark Thomas

maalesef aynı şey. Jekyll'i tamamen kaldırmanın ve yeniden yüklemenin en iyi yolu nedir?
Omnipresent

Yüklemek için Ruby gem kullandıysanız, ile kaldırabilmeniz gerekir gem uninstall jekyll. Mevcut sürümün üzerine yazmak için belki gem ile yüklemediyseniz. Herhangi bir yardım sağlayıp sağlamadığını görmek için porta tarayıcınız veya telnet ile vurmayı denediniz mi?
Alan W. Smith

Yanıtlar:


224

3000 bağlantı noktasını kullanan işlemin PID'sini bulmak için terminalinize bunu yazın:

$ lsof -wni tcp:3000

Ardından işlemi sonlandırmak için PID sütunundaki sayıyı kullanın:

$ kill -9 PID

19
Bunu okuyan herhangi biri için, son komutta, PIDPID altında gördüğünüz gerçek sayıyı değiştirdiğinizden emin olun . örneğin, koştumkill -9 11734
JGallardo

Sorunun bir IPv6 yapılandırma sorunundan gelen zararsız bir uyarı da olabileceğini unutmayın: sunucu önce çift yığınlı bir IPv4 + IPv6 adresine bağlanır, ardından yalnızca IPv6 adresine bağlanmaya çalışır; ve IPv6 adresi zaten önceki çift yığınlı soket tarafından alındığından ikincisi çalışmaz.
jpetazzo

17

Yorum göndermeye yetkili değildim. Ben de yeni bir cevap ekledim.

Bu sorunla Mac OS X 10.10.3'te karşılaştım. Ve daha önce Jekyll'i hiç kurmamış / kullanmamıştım. Jekyll sunucusunu 4000 varsayılan port numarasıyla başlatamadım. Nedeni portun NoMachine'in kullandığı ile aynı olmasıydı. İle

$ sudo lsof -wni tcp:4000

Not: Bu komutu çalıştırmadan sudoçıktı alınmaz.

Bu çıktıyı gördüm:

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)

nxdNoMachine tarafından başlatılan süreç olan 4000 numaralı bağlantı noktası işgal edildi . Ve

$ sudo kill -9 449

işe yaramaz, çünkü NoMachine'in nxd süreci yeni bir PID ile yeniden başlamaya devam edecektir.

Bu nedenle, şunlardan birini yapmalıydım:

  • Sitedeki jekyll sunucu bağlantı noktamı _config.ymlbaşka birine değiştirdim. Aşağıdaki satırı ekledim _config.ymlve işe yaradı.

    port: 3000 # change server port to 3000

veya

  • NoMachine'in varsayılan nxd bağlantı noktası değiştirildi veya NoMachine'i Kaldır

Teşekkürler, bu yanıtı bulana kadar terabazın ne olduğunu anlayamadım.
Highway of Life

10

Ctrl-Zbir programı sonlandırmaz, aksine onu askıya alır ve arka plana gönderir. Programı "fg" komutu ile devam ettirebilirsiniz. Aslında onu sonlandırmak için kullanın Ctrl-C.

Gerçek hata mesajı sahte görünüyor ve göz ardı edilebilir. Aynı "adres kullanımda" hata mesajını alıyorum ancak jekyll yine de beklenen bağlantı noktasında iyi çalışıyor.


Ayrıca hata mesajı alıyorum ama sitemi kapatabilirim: 4000
joshuahornby10

3

Bu problemle yakın zamanda karşılaştım.

Yukarıda belirtilen tüm yöntemleri denedim ve hatta bilgisayarımı yeniden başlattım, ancak yine de çözemedim !!! Sonra jekyll'i kaldırdım ve yeni bir versiyon yükledim, sadece çalıştı.

gem uninstall jekyll & gem install jekyll (belki süper kullanıcı ayrıcalığına ihtiyacınız var).

Benzer hatalardan gerçekten rahatsız olursanız, bu sb yöntemi denemeye değer ...



0

Halihazırda bir sunucu çalıştırdığınız yerde açık başka bir terminaliniz olmadığını kontrol edin. Durum buysa, sunucuyu kapatmak için bir CTRL-C yapın ve bu bağlantı noktasını / adresi serbest bırakacaktır.


0

Öncelikle, 3000 bağlantı noktasını kullanan sürecin PID'sini bulmanız gerekir:

 $ps -ef

Bunun gibi çıktı:

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

Burada görebilirsin :

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

localhost: 3000 var pid: 6078

bu süreci öldürmek

$sudo kill 6078  

o zaman koş

$rails s

-1

etrafında çalışmak

içinde /_sitevadede:python -m SimpleHTTPServer 8080

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.