Kesalahan TCPServer: Alamat sudah digunakan - bind (2)


90

Jekyll bekerja dengan baik untuk saya beberapa minggu yang lalu tetapi sekarang tiba-tiba saya mendapatkan kesalahan berikut:

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

 % lsof -i :4000
 <fetches nothing>

Meskipun tidak ada yang berjalan di port tersebut. Berikut detailnya:

 % 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 

Ini hasilnya

 % 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

Saya tahu alamatnya tidak digunakan dan jekyll mungkin rusak karena beberapa alasan lain selain melemparkan kesalahan itu. Apa saja pilihan saya? Saya juga sudah mencoba menginstal ulang.


Bagaimana tepatnya Anda tahu bahwa alamat tersebut tidak digunakan?
Sergio Tulentsev

Saya mencoba lsof -i :<port number>dan hal yang sama terjadi di kotak yang berbeda
Omnipresent

Apa yang terjadi jika Anda menentukan port alternatif?
Mark Thomas

sayangnya, hal yang sama. Apa cara terbaik untuk sepenuhnya menghapus jekyll dan menginstalnya kembali.
Omnipresent

Jika Anda menggunakan permata Ruby untuk menginstal, Anda seharusnya dapat menghapus penginstalan gem uninstall jekyll. Jika Anda tidak mungkin menginstal dengan gem untuk menimpa versi yang ada. Apakah Anda mencoba menekan port dengan browser atau telnet Anda untuk melihat apakah itu memberikan bantuan?
Alan W. Smith

Jawaban:


224

Ketik ini di terminal Anda untuk mengetahui PID dari proses yang menggunakan port 3000:

$ lsof -wni tcp:3000

Kemudian, gunakan nomor di kolom PID untuk menghentikan proses:

$ kill -9 PID

19
Kepada siapa pun yang membaca ini, pastikan bahwa dalam perintah terakhir, Anda mengganti PIDdengan nomor aktual yang Anda lihat di bawah PID. misalnya, saya berlarikill -9 11734
JGallardo

Perhatikan bahwa masalahnya juga bisa berupa peringatan yang tidak berbahaya yang berasal dari masalah konfigurasi IPv6: server pertama-tama mengikat ke alamat IPv4 + IPv6 tumpukan ganda, lalu mencoba mengikat ke alamat khusus IPv6; dan yang terakhir tidak berfungsi karena alamat IPv6 sudah digunakan oleh soket tumpukan ganda sebelumnya.
jpetazzo

17

Saya tidak memenuhi syarat untuk mengirim komentar. Jadi saya menambahkan jawaban baru.

Saya mengalami masalah ini di Mac OS X 10.10.3. Dan saya belum pernah memasang / menggunakan Jekyll sebelumnya. Saya tidak dapat menjalankan server jekyll dengan nomor port default 4000. Alasannya adalah port tersebut sama dengan yang digunakan NoMachine. Dengan

$ sudo lsof -wni tcp:4000

Catatan: Menjalankan perintah ini tanpa tidak sudoakan memiliki keluaran.

Saya melihat keluaran ini:

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 ditempati nxd, yang merupakan proses yang dimulai oleh NoMachine. Dan

$ sudo kill -9 449

tidak akan berfungsi, karena proses nxd NoMachine akan terus dimulai ulang, dengan PID baru.

Oleh karena itu, saya harus:

  • Mengubah port server jekyll saya di situs _config.ymlke yang lain. Saya menambahkan baris di bawah _config.ymldan berhasil.

    port: 3000 # change server port to 3000

atau

  • Mengubah port nxd default NoMachine, atau Uninstall NoMachine

Terima kasih, saya tidak tahu apa itu database sampai saya menemukan jawaban ini.
Highway of Life

10

Ctrl-Ztidak menghentikan program, melainkan menangguhkannya dan mengirimkannya ke latar belakang. Anda dapat melanjutkan program dengan perintah "fg". Untuk benar-benar menghentikannya, gunakan Ctrl-C.

Pesan kesalahan sebenarnya tampaknya palsu dan dapat diabaikan. Saya mendapatkan pesan kesalahan yang sama "alamat sedang digunakan" tetapi jekyll berfungsi dengan baik di port yang diharapkan.


Saya juga mendapatkan pesan kesalahan tetapi saya dapat menjalankan situs saya: 4000
joshuahornby10

3

Saya telah menemui masalah ini baru-baru ini.

Saya mencoba semua metode yang disebutkan di atas, dan bahkan me-restart komputer saya, tetapi masih tidak bisa menyelesaikannya !!! Kemudian saya menghapus jekyll dan menginstal versi baru, itu berfungsi.

gem uninstall jekyll & gem install jekyll (mungkin Anda membutuhkan hak istimewa pengguna super).

Jika Anda benar-benar kesal dengan bug serupa, metode sb ini patut dicoba ...



0

Periksa apakah Anda tidak membuka terminal lain di mana Anda sudah menjalankan server. Jika demikian, lakukan CTRL-C untuk mematikan server, dan itu akan membebaskan port / alamat.


0

Pertama, Anda perlu menemukan PID dari proses yang menggunakan port 3000:

 $ps -ef

Output Seperti ini:

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

di sini Anda bisa melihat:

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

localhost: 3000 punya pid: 6078

bunuh proses itu dengan

$sudo kill 6078  

lalu lari

$rails s

-1

bekerja di sekitar

dalam /_sitemenjalankan:python -m SimpleHTTPServer 8080

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.