# Show GN: 열려있는 포트와 프로세스를 한눈에 보여주는 CLI 도구

> Clean Markdown view of GeekNews topic #25983. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=25983](https://news.hada.io/topic?id=25983)
- GeekNews Markdown: [https://news.hada.io/topic/25983.md](https://news.hada.io/topic/25983.md)
- Type: show
- Author: [givvemee](https://news.hada.io/@givvemee)
- Published: 2026-01-20T19:39:25+09:00
- Updated: 2026-01-20T19:39:25+09:00
- Original source: [github.com/givvemee](https://github.com/givvemee/ports-cli)
- Points: 18
- Comments: 6

## Summary

**열려있는 포트와 프로세스를 한눈에 보여주는 CLI 도구**  
개발 중 자주 사용하는 `lsof` 명령을 대체하는 **ports-cli**는 현재 열려 있는 포트를 프로세스명과 프로젝트 경로까지 정리해 보여줍니다. Node.js 프로젝트의 경우 `package.json`의 이름을 읽어 실제 서비스명을 표시하며, `ports bye 3000`처럼 간단한 명령으로 해당 포트를 종료할 수도 있습니다. macOS 전용으로, 별도 의존성 없이 가볍게 실행됩니다.

## Topic Body

개발하다 보면 `lsof -i :3000`  같은 명령어를 수도 없이 치게 됩니다.  
"이 포트 뭐가 쓰고 있지?", "아까 그 서버 안 끈 것 같은데..."  
  
ports-cli는 현재 열려있는 모든 포트를 프로세스 이름, 프로젝트 경로와 함께 깔끔하게 보여주는 CLI 도구입니다.  
  
##### 주요 기능  
  
- **한눈에 보기:** 열린 포트, 프로세스명, 프로젝트 경로를 테이블 형태로 표시  
- **Node.js 프로젝트 인식:** package.json의 name을 읽어서 'node' 대신 실제 프로젝트명으로 표시  
- **사용자 프로세스 필터링:** `-u` 옵션으로 시스템 프로세스 제외하고 내가 띄운 것만 확인  
- **종료:** ports bye 3000으로 해당 포트 프로세스 즉시 kill  
  
##### 설치  
```  
brew tap givvemee/tap  
brew install ports-cli  
```  
  
##### 사용법  
```  
ports              # 모든 리스닝 포트 표시  
ports -u           # 내가 띄운 프로세스만  
ports bye 3000     # 3000번 포트 프로세스 종료  
```  
  
  
출력 예시  
```  
  
PORT     PROCESS                  PATH  
----     -------                  ----  
3000     my-app                   ~/Documents/GitHub/my-app  
5432     postgres                 -  
8080     test-server              ~/Documents/GitHub/test-server  
```  
  
macOS 전용, Bash 스크립트로 별도 의존성 없이 가볍게 동작합니다.  
  
  
  
피드백 환영합니다. :)

## Comments



### Comment 49941

- Author: channprj
- Created: 2026-01-26T15:15:27+09:00
- Points: 1

오 편의기능들이 있네요. 👍🏻  
  
macOS 의 경우 별도 설치 없이 아래의 커맨드로 간단히 확인하는 것도 가능합니다.  
~/.zshrc 에 넣어주시면 됩니다.  
  
(참고차 공유드립니다!)  
  
alias portcheck="printf \"\033[4;37m%-15s %-8s %-20s %s\033[0m\n\" \"COMMAND\" \"PID\" \"PORT\" \"DIR\"; sudo lsof -iTCP -sTCP:LISTEN -n -P | awk 'NR>1 {print \$2, \$1, \$9}' | sort -u | while read pid cmd port; do dir=\$(sudo lsof -p \"\$pid\" -a -d cwd -F n 2>/dev/null | tail -1 | cut -c2-); printf \"\033[1;32m%-15s\033[0m \033[1;36m%-8s\033[0m \033[1;33m%-20s\033[0m %s\n\" \"\$cmd\" \"\$pid\" \"\$port\" \"\$dir\"; done"

### Comment 50007

- Author: givvemee
- Created: 2026-01-27T11:49:06+09:00
- Points: 1
- Parent comment: 49941
- Depth: 1

이렇게 portcheck alias 만들어서 쓰셨군요. 이런 방법도 있겠네요. 고맙습니다!

### Comment 50008

- Author: channprj
- Created: 2026-01-27T12:01:27+09:00
- Points: 1
- Parent comment: 50007
- Depth: 2

쌍따옴표 문제가 있어 다시 공유를 드립니다.  
  
alias portcheck='printf "\033[4;37m%-36s %-8s %-22s %s\033[0m\n" "COMMAND" "PID" "LISTEN" "CWD"; sudo lsof -nP -iTCP -sTCP:LISTEN -F pcn 2>/dev/null | awk '"'"'BEGIN{pid=cmd=name=""}/^p/{pid=substr($0,2)}/^c/{cmd=substr($0,2)}/^n/{name=substr($0,2);if(pid&&cmd&&name)print pid"\t"cmd"\t"name}'"'"' | sort -u | while IFS=$'"'"'\t'"'"' read -r pid cmd name; do dir=$(sudo lsof -n -p "$pid" -a -d cwd -F n 2>/dev/null | sed -n '"'"'s/^n//p'"'"' | tail -1); [ -z "$dir" ] && dir="-"; printf "\033[1;32m%-36.36s\033[0m \033[1;36m%-8s\033[0m \033[1;33m%-22s\033[0m %s\n" "$cmd" "$pid" "$name" "$dir"; done'

### Comment 49684

- Author: chcv0313
- Created: 2026-01-22T14:01:30+09:00
- Points: 1

sudo Netstat -tnlp 대비 나은점이 궁금합니다

### Comment 49942

- Author: channprj
- Created: 2026-01-26T15:16:50+09:00
- Points: 1
- Parent comment: 49684
- Depth: 1

사용해보시면 아시겠지만 좀 더 정리를 해서 보여줍니다.  
사용자가 직접 사용중인 프로세스만 볼 수 있도록 필터 기능도 있네요.

### Comment 49587

- Author: yshrust
- Created: 2026-01-21T10:39:56+09:00
- Points: 1

오, 바로 설치해서 써봤는데  간단해서 사용하기 좋네요!!   
감사합니다 ㅎㅎ
