Haru Utils

PORT CHECK

특정 포트를 누가 사용 중인지 찾을 때

LISTEN 소켓, PID, 실행 파일과 systemd 서비스를 연결해 포트 충돌 원인을 확인합니다.
포트 사용 프로세스Address already in usesslsof port8080 충돌
환경Ubuntu · Debian · RHEL 계열
분류네트워크
검토일2026-08-27
진행5단계 · 조회 우선

SAFE OPERATING BOUNDARY

중단·복구 기준부터 확인하세요

STOP CONDITIONS

여기서는 멈추세요

  • 명령 출력의 서버·서비스·경로가 예상 대상과 다르면 변경 단계로 넘어가지 않습니다.
  • 현재 접속 세션, 백업 또는 콘솔 복구 경로를 확보하지 못했다면 상태 변경 명령을 실행하지 않습니다.
ROLLBACK

복구 기준

변경 전 설정과 출력값을 기록하고, 예상과 다른 결과가 나오면 추가 변경을 멈춘 뒤 승인된 운영 복구 절차로 되돌립니다.

ESCALATION PACK

담당자에게 전달할 자료

  • 장애 발생 시각·정상화 시각과 원문 오류 메시지
  • 민감정보를 제거한 조회 명령 출력과 변경 전후 차이
  • 조치 후 동일 조건으로 수행한 재검증 결과
공식 문서와 읽기 전용 진단 명령을 우선 검토했습니다. 실제 서버에서는 설치된 버전의 --help와 man을 함께 확인하세요.

BEFORE YOU START

이런 증상에서 시작합니다

  • Address already in use
  • 서버 기동 실패
  • 예상치 못한 포트 응답

CHECK THE BRANCH

놓치기 쉬운 원인 분기

01

127.0.0.1에만 바인딩된 경우

프로세스가 LISTEN이어도 loopback 주소에만 바인딩되면 다른 호스트에서는 접근할 수 없습니다.

02

IPv4와 IPv6가 다른 경우

0.0.0.0과 [::]의 리스닝 범위를 구분하고 실제 클라이언트가 사용하는 주소 체계와 맞는지 확인합니다.

03

컨테이너·socket activation인 경우

호스트 namespace의 ss 결과만 보지 말고 Docker 포트 매핑과 systemd socket unit이 포트를 소유하는지도 확인합니다.

04

서버 내부에서는 되지만 외부만 실패

바인딩 주소를 확인한 뒤 호스트 방화벽, 클라우드 보안 규칙, 로드밸런서와 NAT를 서버 바깥 경계부터 순서대로 확인합니다.

FOLLOW THE FLOW

순서대로 확인하기

1
조회시스템을 변경하지 않는 확인 단계

전체 LISTEN 포트 확인

숫자 주소와 PID를 함께 표시합니다.

TCP·UDP 리스닝 소켓
sudo ss -lntup
결과 읽기

Local Address:Port와 users 영역에서 PID·프로세스 이름을 확인합니다.

다음 판단

문제 포트 번호를 정확히 기록합니다.

2
조회시스템을 변경하지 않는 확인 단계

문제 포트만 좁혀 확인

예시 8080을 실제 포트로 바꿉니다.

TCP 8080 사용 프로세스
sudo lsof -nP -iTCP:8080 -sTCP:LISTEN
연결까지 포함
sudo ss -ntp | grep ':8080 '
결과 읽기

LISTEN 프로세스와 연결을 혼동하지 않습니다.

다음 판단

PID를 다음 단계에 사용합니다.

3
조회시스템을 변경하지 않는 확인 단계

PID의 실행 정보 확인

프로세스가 어느 사용자와 명령으로 시작됐는지 확인합니다.

PID 상세
ps -fp PID_NUMBER
실행 파일 경로
sudo readlink -f /proc/PID_NUMBER/exe
결과 읽기

예상 애플리케이션인지, 이전 배포의 잔여 프로세스인지 구분합니다.

다음 판단

systemd 관리 여부를 확인합니다.

4
조회시스템을 변경하지 않는 확인 단계

서비스와 로그 연결

unit을 알고 있다면 SERVICE_NAME을 바꿔 확인합니다.

서비스 상태
systemctl status SERVICE_NAME --no-pager -l
서비스 최근 로그
journalctl -u SERVICE_NAME -n 100 --no-pager
포트의 바인딩 주소 재확인
sudo ss -lntp 'sport = :8080'
127.0.0.1은 외부 인터페이스에서 접근할 수 없습니다.
Ubuntu UFW 상태
sudo ufw status verbose
UFW를 사용하지 않는 환경에서는 공급자 방화벽과 nftables 정책을 확인합니다.
클라이언트 방향 라우팅
ip route get CLIENT_IP
CLIENT_IP를 실제 접속 출발지 주소로 바꿉니다.
결과 읽기

LISTEN 주소가 외부 인터페이스를 포함하고 로컬 연결이 되는데 외부만 실패하면 호스트 밖 보안 그룹·로드밸런서·NAT 범위를 확인합니다.

다음 판단

서버 설정을 반복 변경하기 전에 어느 네트워크 경계에서 패킷이 끊기는지 담당자와 대조합니다.

5
변경데이터·서비스 상태가 달라질 수 있는 단계

승인 후 충돌을 해소하고 검증

서비스 중단 영향과 올바른 unit 이름을 확인합니다.

변경 단계입니다. 실행 전 대상 이름과 경로, 서비스 중단 영향, 복구 방법을 다시 확인하세요.
승인된 서비스 중지
sudo systemctl stop SERVICE_NAME
포트 해제 확인
sudo ss -lntup | grep ':8080 ' || echo '포트가 비어 있습니다'
결과 읽기

예상 프로세스만 종료되고 포트가 해제됐는지 확인합니다.

다음 판단

새 서비스를 기동한 뒤 헬스체크까지 수행합니다.

PRIMARY REFERENCES

공식 문서

배포판과 버전에 따라 옵션·로그 위치가 다를 수 있습니다. 실행 전 서버의 --help와 로컬 매뉴얼을 함께 확인하세요.

도구 빠른 검색

최근 사용한 도구를 다시 열거나, 이름과 기능으로 검색하세요.

검색어와 도구의 입력·결과는 저장하지 않습니다.

↑↓ 이동 · Enter 열기 · Esc 닫기