본문 바로가기
Old Posts/Linux

[Linux] 특정 포트를 사용하는 프로세스 확인

by A6K 2021. 11. 20.

리눅스에서 데몬을 띄우다보면 "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 명령을 이용해서 특정 포트 번호를 사용하는 정보를 필터링해서 보면 된다.

댓글