리눅스에서 데몬을 띄우다보면 "BindException : Address already in used : bind" 같은 예외를 발생시키면서 구동되지 않는 경우가 있다. 데몬이 사용하려고하는 포트를 이미 시스템에서 다른 프로세스가 사용하고 있기 때문에 바인딩을 할 수 없어 발생하는 예외다.
대부분 포트 번호를 랜덤으로 사용하는 프로세스가 먼저 포트를 선점해서 발생하는 것이 원인이므로 그 프로세스를 찾아서 재시작해주면 해결된다.
현재 로컬서버에서 열림 포트를 확인하기 위해서 netstat 명령을 사용하면 된다.
$ sudo netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:17005 0.0.0.0:* LISTEN 5362/java
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1239/mysqld
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 5362/java
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1439/sshd
sudo를 이용해서 root 권한을 획득해야 프로세스 정보가 보여진다.
$ sudo netstat -ntlp | grep :17005
tcp 0 0 127.0.0.1:17005 0.0.0.0:* LISTEN 5362/java
출력 결과를 grep 명령을 이용해서 특정 포트 번호를 사용하는 정보를 필터링해서 보면 된다.
댓글