본문 바로가기
리눅스 이야기

네트워크 80 포트번호 사용중인 프로세스 찾기

by reallinux1 2025. 11. 12.

🔍 리눅스에서 80번 포트를 사용하는 프로세스 찾기 — SS와 netstat 실습

리눅스 환경에서 네트워크 포트는 프로세스 간 통신의 핵심 역할을 합니다.
이번 포스트에서는 “현재 80번 포트를 점유하고 있는 프로세스는 누구인가?”
직접 명령어를 통해 확인하는 실습을 진행해보겠습니다.

🧠 1. 네트워크 포트란 무엇인가?

리눅스 서버에는 운영체제(OS) 위에서 다양한 유저 프로그램이 실행됩니다.
이 프로그램들은 네트워크 통신을 위해 공용 커널 리소스인 소켓 인터페이스를 사용합니다.

각 애플리케이션은 특정 포트 번호를 통해 통신을 처리하는데요:

  • 80번 포트 → 기본 HTTP (웹서버)
  • 443번 포트 → HTTPS (보안 웹서버)
  • 22번 포트 → SSH (원격 접속)
  • 8080 / 8000번 포트 → 개발용 웹서비스에서 자주 사용

하나의 포트는 한 번에 하나의 프로세스만 사용할 수 있습니다.
만약 이미 사용 중인 포트를 다른 프로세스가 점유하려고 하면, 다음과 같은 에러가 발생합니다.

Address already in use
Cannot bind: port is already used

이처럼 포트는 프로세스의 네트워크 주소 공간이기 때문에 충돌이 나면 바인딩이 불가능합니다.

🧩 2. 포트 점유 현황을 확인하는 명령어

리눅스에서는 특정 포트가 어떤 프로세스에 의해 점유 중인지 확인할 수 있는
두 가지 핵심 명령어가 있습니다:

  • ss (Socket Statistics)
  • netstat (Network Statistics — 과거 버전이지만 여전히 사용 가능)

이 두 명령어는 단순히 “조회용” 도구처럼 보이지만,
리눅스 네트워크 관리 실무에서 반드시 손에 익어야 하는 명령어입니다.

⚙️ 팁:
ss와 netstat은 단순히 실행 방법을 아는 것보다,
100번 이상 직접 타이핑하면서 익숙해지는 것이 중요합니다.
터미널에서 바로 점검하고 상황을 파악할 수 있어야 합니다.

 

🧰 3. 실습 환경 준비

이번 실습은 RealLinux의 “리눅스 레벨업 챌린지 12번 실습”을 기반으로 진행합니다.
(또는 로컬 VM 환경에서도 동일하게 진행 가능합니다.)

실습 환경

  • OS: Rocky Linux 9 (RHEL 계열)
  • 웹서버: Nginx
  • 명령어: ss, netstat, lsof, ps

Nginx 설치

sudo dnf install -y nginx

설치 후 웹서버를 실행합니다:

sudo systemctl start nginx && sudo systemctl status nginx

실행이 성공하면, 기본적으로 80번 포트(HTTP) 를 점유합니다.
이제 해당 포트를 누가 사용 중인지 확인해보겠습니다.

🔎 4. ss 명령어로 80포트 점유 프로세스 조회

ss는 최신 리눅스에서 netstat을 대체하는 명령어입니다.
현재 열린 소켓, 연결 상태, 점유 중인 포트 등을 빠르게 보여줍니다.

sudo ss -ltnp | grep :80
  • -l : Listening 소켓만 표시
  • -t : TCP 연결만 표시
  • -n : 포트 번호를 숫자로 표시
  • -p : 프로세스 정보 표시

결과 예시:

LISTEN 0      511    *:80     *:*     users:(("nginx",pid=3800,fd=6))

👉 nginx 프로세스가 pid=3800으로 80번 포트를 점유하고 있음을 확인할 수 있습니다.

sudo를 붙이지 않으면 프로세스 정보(pid, program name)가 보이지 않습니다.

🧾 5. netstat 명령어로 확인하기

netstat은 이전 세대 명령어지만, 여전히 많이 사용됩니다.
다만 최신 리눅스에서는 net-tools 패키지를 별도로 설치해야 합니다.

sudo dnf install -y net-tools
sudo netstat -tulnp | grep :80

출력 예시:

tcp   0   0 0.0.0.0:80   0.0.0.0:*   LISTEN   3800/nginx

결과는 ss와 유사하며, 동일한 정보를 제공합니다.

🧠 6. 다른 명령어로 보조 확인

(1) lsof 명령어

포트를 점유하고 있는 파일(소켓)을 기준으로 조회할 수도 있습니다.

sudo lsof -i :80

출력 예시:

nginx  3800  root  6u  IPv4  12345  TCP *:http (LISTEN)

(2) ps 명령어

프로세스 ID를 이용해 상세 프로세스 정보를 조회할 수도 있습니다.

ps -ef | grep nginx

⚡ 7. 포트 번호 변경 시에도 활용 가능

위의 명령어들은 80 대신 다른 포트 번호를 입력하면 그대로 사용 가능합니다.

예를 들어,

sudo ss -ltnp | grep :443
sudo netstat -tulnp | grep :22

이렇게 하면 HTTPS(443), SSH(22) 포트를 점유 중인 프로세스도 쉽게 조회할 수 있습니다.

 

🧩 8. 마무리

이번 실습에서는 다음 내용을 다뤘습니다.

항목 내용

설치 Nginx 웹서버 설치 및 실행
확인 ss, netstat, lsof, ps 명령어를 통한 포트 점유 프로세스 조회
개념 포트 충돌, 프로세스 바인딩 오류, 네트워크 포트 관리 원리

이 명령어들은 단순한 학습용이 아니라,
실제 서버 장애나 포트 충돌을 진단할 때 즉시 활용되는 실무 도구입니다.

💡 정리:
ss와 netstat은 네트워크 관리자의 기본기입니다.
매일 터미널에서 여러 번 입력하면서
손끝으로 익숙해질 때까지 반복 연습하는 것이 중요합니다.

 

추가적으로 리눅스 네트워크를 더 공부하고싶다면 네트워크 완전 정복을 참고하세요. https://reallinux.co.kr/course/se_network

 

Reallinux | 서버엔지니어 | 도커/K8s/클라우드(AWS) 네트워크 완전 정복

네트워크 기본개념핵심정리/ 다양한 네트워크 추적/분석실습 네트워크 실전능력향상

reallinux.co.kr

 

https://youtu.be/szN_bJyi1b4