Lỗi TCPServer: Địa chỉ đã được sử dụng - bind (2)


90

Jekyll đã hoạt động tốt trong vài tuần trở lại đây của tôi nhưng giờ đột nhiên nó cho tôi lỗi sau:

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

 % lsof -i :4000
 <fetches nothing>

Mặc dù không có gì đang chạy trên cổng. Dưới đây là chi tiết:

 % 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 

Đây là đầu ra

 % 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

Tôi biết địa chỉ không được sử dụng và jekyll có thể bị hỏng vì một số lý do khác nhưng lại gây ra lỗi đó. Những lựa chọn của tôi là gì? Tôi cũng đã thử cài đặt lại.


Làm thế nào để bạn biết chính xác địa chỉ không được sử dụng?
Sergio Terrysev

tôi đang cố gắng lsof -i :<port number>cộng với điều tương tự đang xảy ra trên một hộp khác
Toàn bộ

Điều gì xảy ra nếu bạn chỉ định một cổng thay thế?
Mark Thomas

thật không may, điều tương tự. Cách tốt nhất để loại bỏ hoàn toàn jekyll và cài đặt lại nó.
Toàn bộ

Nếu bạn đã sử dụng đá quý Ruby để cài đặt, bạn sẽ có thể gỡ cài đặt bằng gem uninstall jekyll. Nếu bạn không có thể cài đặt bằng gem để ghi đè lên phiên bản hiện có. Bạn đã thử nhấn vào cổng bằng trình duyệt hoặc telnet của mình để xem điều đó có giúp ích gì không?
Alan W. Smith

Câu trả lời:


224

Nhập mã này vào thiết bị đầu cuối của bạn để tìm ra PID của quá trình đang sử dụng cổng 3000:

$ lsof -wni tcp:3000

Sau đó, sử dụng số trong cột PID để kết thúc quá trình:

$ kill -9 PID

19
Đối với bất kỳ ai đang đọc điều này, hãy đảm bảo rằng trong lệnh cuối cùng, bạn thay thế PIDbằng số thực mà bạn thấy trong PID. ví dụ: tôi đã chạykill -9 11734
JGallardo

Lưu ý rằng vấn đề cũng có thể là một cảnh báo vô hại đến từ sự cố cấu hình IPv6: trước tiên máy chủ liên kết với địa chỉ IPv4 + IPv6 ngăn xếp kép, sau đó nó cũng cố gắng liên kết với địa chỉ chỉ IPv6; và cái sau không hoạt động vì địa chỉ IPv6 đã được lấy bởi ổ cắm ngăn xếp kép trước đó.
jpetazzo

17

Tôi đã không đủ điều kiện để đăng bình luận. Vì vậy, tôi đã thêm một câu trả lời mới.

Tôi gặp sự cố này trên Mac OS X 10.10.3. Và tôi chưa bao giờ cài đặt / sử dụng Jekyll trước đây. Tôi không thể khởi động máy chủ jekyll với số cổng mặc định là 4000. Lý do là cổng này giống với những gì NoMachine đã sử dụng. Với

$ sudo lsof -wni tcp:4000

Lưu ý: Chạy lệnh này mà không có sudosẽ không có đầu ra.

Tôi thấy kết quả này:

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)

Cổng 4000 đã bị chiếm đóng nxd, đó là quá trình bắt đầu bởi NoMachine. Và

$ sudo kill -9 449

sẽ không hoạt động, vì quy trình nxd của NoMachine sẽ tiếp tục khởi động lại với một PID mới.

Do đó, tôi phải:

  • Đã thay đổi cổng máy chủ jekyll của tôi trong trang web _config.ymlthành một cổng khác. Tôi đã nối dòng bên dưới vào _config.ymlvà nó hoạt động.

    port: 3000 # change server port to 3000

hoặc là

  • Đã thay đổi cổng nxd mặc định của NoMachine hoặc Gỡ cài đặt NoMachine

Cảm ơn, tôi không thể tìm ra terabase là gì cho đến khi tôi tình cờ thấy câu trả lời này.
Highway of Life

10

Ctrl-Zkhông chấm dứt một chương trình, mà là tạm ngừng chương trình và gửi nó xuống nền. Bạn có thể tiếp tục chương trình bằng lệnh "fg". Để thực sự chấm dứt nó, hãy sử dụng Ctrl-C.

Thông báo lỗi thực tế dường như là không có thật và có thể được bỏ qua. Tôi nhận được cùng một thông báo lỗi "địa chỉ đang sử dụng" nhưng jekyll vẫn hoạt động tốt ở cổng mong đợi.


Tôi cũng nhận được thông báo lỗi nhưng tôi có thể chạy trang web của tôi off: 4000
joshuahornby10

3

Tôi đã gặp vấn đề này gần đây.

Tôi đã thử tất cả các phương pháp được đề cập ở trên và thậm chí khởi động lại máy tính của mình, nhưng vẫn không giải quyết được !!! Sau đó, tôi gỡ bỏ jekyll và cài đặt một phiên bản mới, nó chỉ hoạt động.

gem uninstall jekyll & gem install jekyll (có thể bạn cần tư nhân siêu người dùng).

Nếu bạn thực sự khó chịu với những lỗi tương tự, phương pháp sb này đáng để thử ...



0

Kiểm tra để đảm bảo rằng bạn không có thiết bị đầu cuối khác đang mở nơi bạn đang chạy máy chủ. Nếu đúng như vậy, hãy thực hiện CTRL-C để tắt máy chủ và điều đó sẽ giải phóng cổng / địa chỉ.


0

Trước tiên, bạn cần tìm PID của quy trình đang sử dụng cổng 3000:

 $ps -ef

Đầu ra như thế này:

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

Ở đây bạn có thể thấy :

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

localhost: 3000 có pid: 6078

giết quá trình đó bằng cách

$sudo kill 6078  

sau đó chạy

$rails s

-1

làm việc xung quanh

đang /_sitechạy:python -m SimpleHTTPServer 8080

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.