Omnipresent Omnipresent - 2 years ago 228
Ruby Question

TCPServer Error: Address already in use - bind(2)

Jekyll was working fine for me few weeks back but now all of a sudden it gives me the following error:

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

% lsof -i :4000
<fetches nothing>

Even though nothing is running on the port. Below are the details:

% jekyll --version
Jekyll 0.11.2
% where jekyll
% ruby --version
ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]
% rvm --version
rvm 1.10.0

Here is the output

% jekyll --server
Configuration from /home/bhaarat/blog/
Auto-regenerating enabled: /home/bhaarat/blog/ -> /home/bhaarat/blog/
[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

I know the address isn't in use and jekyll is probably breaking for some other reason but throwing that error. What are my options? I've tried re-installing as well.

Answer Source

Type this in your terminal to find out the PID of the process that's using the 3000 port:

$ lsof -wni tcp:3000

Then, use the number in the PID column to kill the process:

$ kill -9 PID
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download