TCPServerエラー:アドレスは既に使用中-bind(2)


90

ジキルは数週間前に私のためにうまく働いていましたが、今突然、それは私に次のエラーを与えます:

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

 % lsof -i :4000
 <fetches nothing>

ポートでは何も実行されていません。以下は詳細です:

 % 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 

これが出力です

 % 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

アドレスが使用されておらず、他の理由でjekyllが壊れている可能性がありますが、そのエラーがスローされます。私のオプションは何ですか?私も再インストールしてみました。


住所が使用されていないことをどのくらい正確に知っていますか?
Sergio Tulentsev 2012

私がしようとしているlsof -i :<port number>プラスと同じことは、別の箱の上に起こっている
遍在

代替ポートを指定するとどうなりますか?
マークトーマス

残念ながら、同じことです。jekyllを完全に削除して再インストールする最良の方法は何ですか。
2012

Ruby gemを使用してインストールした場合は、でアンインストールできるはずgem uninstall jekyllです。既存のバージョンを上書きするgemをインストールしていない可能性があります。ブラウザまたはtelnetでポートにアクセスして、問題が解決するかどうか確認しましたか?
アランW.スミス

回答:


224

端末にこれを入力して、3000ポートを使用しているプロセスのPIDを確認します。

$ lsof -wni tcp:3000

次に、PID列の番号を使用してプロセスを強制終了します。

$ kill -9 PID

19
これを読む人は、最後のコマンドPIDで、PIDの下に表示される実際の番号に置き換えてください。たとえば、私は走ったkill -9 11734
JGallardo 2013年

この問題は、IPv6構成の問題による無害な警告でもある可能性があることに注意してください。サーバーはまずデュアルスタックIPv4 + IPv6アドレスにバインドし、次にIPv6のみのアドレスにバインドしようとします。後者は、IPv6アドレスが以前のデュアルスタックソケットによってすでに取得されているため機能しません。
jpetazzo 2014

17

コメントを投稿する資格がありませんでした。そこで、新しい答えを追加しました。

Mac OS X 10.10.3でこの問題が発生しました。そして、私はジキルをインストール/使用したことがありませんでした。デフォルトのポート番号4000でjekyllサーバーを起動できませんでした。理由は、ポートがNoMachineが使用していたものと同じであったためです。と

$ sudo lsof -wni tcp:4000

注:このコマンドを実行せずに実行しsudoても、出力はありません。

私はこの出力を見ました:

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)

ポート4000はnxd、NoMachineによって開始されたプロセスであるによって占有されていました。そして

$ sudo kill -9 449

NoMachineのnxdプロセスが新しいPIDで再起動し続けるため、機能しません。

したがって、私はどちらかをしなければなりませんでした:

  • サイトのjekyllサーバーのポートを変更した _config.ymlを別の。以下の行を追加したところ、_config.ymlうまくいきました。

    port: 3000 # change server port to 3000

または

  • NoMachineのデフォルトのnxdポートを変更、またはNoMachineをアンインストール

おかげで、私はこの答えに出くわすまで、Terabaseが何であるかを理解できませんでした。
Highway of Life

10

Ctrl-Zプログラムを終了するのではなく、一時停止してバックグラウンドに送信します。「fg」コマンドでプログラムを再開できます。実際に終了するには、Ctrl-C

実際のエラーメッセージは偽のようであり、無視してかまいません。同じエラーメッセージ "address in use"が表示されますが、想定されたポートでjekyllが正常に機能します。


エラーメッセージも表示されますが、サイトを実行できます:4000
joshuahornby10

3

最近この問題に遭遇しました。

上記の方法をすべて試し、コンピュータを再起動しましたが、まだ解決できませんでした!!! 次に、jekyllを削除して新しいバージョンをインストールしましたが、うまくいきました。

gem uninstall jekyll & gem install jekyll (おそらく、スーパーユーザー権限が必要です)。

あなたが本当に同様のバグに悩まされているなら、このsbメソッドは試してみる価値があります...



0

すでにサーバーを実行している場所で別のターミナルを開いていないことを確認してください。その場合は、CTRL-Cを実行してサーバーをシャットダウンすると、ポート/アドレスが解放されます。


0

最初に、3000ポートを使用しているプロセスのPIDを見つける必要があります。

 $ps -ef

このような出力:

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

ここで見ることができます:

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

localhost:3000持っている pid: 6078

そのプロセスを殺す

$sudo kill 6078  

次に実行します

$rails s

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.