[유닉스/리눅스] 특정 포트 오픈 확인 및 연결 종료
명령어 : netstat, lsof, kill 이용
리눅스 서버에서 특정 포트가 이미 사용 중이거나 포트가 열려있는지 확인하는 명령어
아래와 같은 오류 발생 시 해결할 수 있다.
[오류 메시지]
java.net.BindException: 주소가 이미 사용 중
[명령어 소개]
1. netstat
netstat -nap | grep 포트번호
* 옵션
-t : tcp, -u : udp
-a : 모두 표시
-n : number port 포트 넘버로 표시(n옵션을 주지 않으면 서비스명으로 표시 )
-p : 프로세스 pid 등의 정보
결과 :
(우선 nc로 포트를 열어줌)
netstat -nap | grep 41183 명령어 입력결과, 아래와 같은 결과가 나옴.
>> 프로세스 번호(pid)가 11895라는 것을 알 수 있음.
2. lsof
lsof -i:포트번호
* lsof : list open files
통신할 때 사용하는 파일 입출력을 확인할 수 있음
결과 :
(우선 nc로 포트를 열어줌)
ls -i:41183 명령어 입력한 결과, 아래와 같은 결과가 나옴.
>> 프로세스 번호(pid)가 11895라는 것을 알 수 있음.
[사용중인 프로제스 문제 해결방법]
java.net.BindException: 주소가 이미 사용 중... 8080포트
위와 같은 오류이면,
1) 해당 포트에 어떤 프로세스가 사용 중인지 확인
명령어 :
netstat -anp | grep 8080
또는
lsof -i:8080
2) 해당 프로세스 종료
결과창에서 프로세스 번호( pid)에 대해
명령어 : kill -9 프로세스 번호
를 입력해서 해당 프로세스를 죽임.
* kill -9는 강제 종료를 의미함.
3) 결과 확인
이후 다시 netstat -anp | grep 8080 또는 lsof -i:8080으로 해당 포트 확인하여 제대로 프로세스가 종료되어 해당 포트가 사용가능한지 확인