Omnipresent Omnipresent - 4 months ago 32
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
/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


Here is the output

% 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


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

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