Errno::EADDRINUSE

Jmnote (토론 | 기여)님의 2020년 4월 15일 (수) 01:31 판 (→‎주석)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

1 개요[ | ]

Errno::EADDRINUSE
  • rails server 명령어로 앱 서버를 구동했는데, 포트가 이미 사용중일 때 나오는 오류 메시지

2 문제상황[ | ]

railsuser@zetawiki:~/MyDemo$ rails server &
[1] 12618
railsuser@zetawiki:~/MyDemo$ => Booting WEBrick
=> Rails 4.2.5 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2016-01-26 09:16:59] INFO  WEBrick 1.3.1
[2016-01-26 09:16:59] INFO  ruby 2.2.1 (2015-02-26) [x86_64-linux]
Exiting
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/socket.rb:206:in `bind': Address already in use - bind(2) for 127.0.0.1:3000 (Errno::EADDRINUSE)
	from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/socket.rb:206:in `listen'
	from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/socket.rb:461:in `block in tcp_server_sockets'
	from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/socket.rb:232:in `each'
... (생략)
	from bin/rails:3:in `load'
	from bin/rails:3:in `<main>'

[1]+  Exit 1                  rails server
railsuser@zetawiki:~/MyDemo$

3 확인[ | ]

railsuser@zetawiki:~/MyDemo$ netstat -tnlp | grep 3000
(No info could be read for "-p": geteuid()=1000 but you should be root.)
tcp        0      0 127.0.0.1:3000          0.0.0.0:*               LISTEN      -               
tcp6       0      0 ::1:3000                :::*                    LISTEN      -
→ 다른 계정에서 실행중인 프로세스가 3000번 포트를 사용중임
→ 권한이 없어 PID, 프로세스명은 확인 불가

4 root 계정으로 확인[ | ]

  • root 계정으로 확인해보니...
root@zetawiki:~# netstat -tnlp | grep 3000
tcp        0      0 127.0.0.1:3000          0.0.0.0:*               LISTEN      10835/ruby      
tcp6       0      0 ::1:3000                :::*                    LISTEN      10835/ruby
root@zetawiki:~# ps -ef | grep 10835 | grep -v grep
testuser 10835     1  0 08:54 ?        00:00:03 /usr/local/rvm/rubies/ruby-2.2.1/bin/ruby bin/rails server
→ testuser 계정으로 실행된 rails 서버가 3000번 포트를 사용중임

5 조치[ | ]

  • root 계정[1]으로 프로세스 중지
root@zetawiki:~# kill -9 10835
root@zetawiki:~# ps -ef | grep 10835 | grep -v grep
root@zetawiki:~#

6 재시도[ | ]

  • 원래 계정 railsuser로 다시 rails 서버 구동
railsuser@zetawiki:~/MyDemo$ rails server &
[1] 17192
railsuser@zetawiki:~/MyDemo$ => Booting WEBrick
=> Rails 4.2.5 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2016-01-26 10:43:39] INFO  WEBrick 1.3.1
[2016-01-26 10:43:39] INFO  ruby 2.2.1 (2015-02-26) [x86_64-linux]
[2016-01-26 10:43:39] INFO  WEBrick::HTTPServer#start: pid=17192 port=3000

railsuser@zetawiki:~/MyDemo$
→ rails 서버가 정상적으로 구동됨

7 같이 보기[ | ]

8 참고[ | ]

  1. 또는 프로세스 소유자인 testuser 계정
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}