🔍 리눅스에서 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
'리눅스 이야기' 카테고리의 다른 글
| 구글웹까지 네트워크 통신경로 확인하려면? (0) | 2025.11.05 |
|---|---|
| 8080 포트번호 어떻게 차단하나요 ? (0) | 2025.10.29 |
| 비밀번호 없이 SSH 접속 어떻게 하죠? (0) | 2025.10.22 |
| 프로세스가 호출하는 시스템콜 보려면? (0) | 2025.10.15 |
| 프로세스 우선순위 어떻게 바꾸나요? (0) | 2025.10.13 |