18 คะแนน โดย givvemee 2026-01-20 | 6 ความคิดเห็น | แชร์ทาง WhatsApp

เวลาเขียนโค้ดก็มักจะต้องพิมพ์คำสั่งอย่าง lsof -i :3000 ซ้ำแล้วซ้ำเล่า
"พอร์ตนี้มีอะไรใช้อยู่?" "เหมือนเมื่อกี้จะยังไม่ได้ปิดเซิร์ฟเวอร์..."

ports-cli คือเครื่องมือ CLI ที่แสดงพอร์ตที่เปิดอยู่ทั้งหมดอย่างเป็นระเบียบ พร้อมชื่อโปรเซสและพาธของโปรเจกต์

ฟีเจอร์หลัก

  • ดูได้ในครั้งเดียว: แสดงพอร์ตที่เปิดอยู่ ชื่อโปรเซส และพาธโปรเจกต์ในรูปแบบตาราง
  • รู้จำโปรเจกต์ Node.js: อ่าน name จาก package.json แล้วแสดงเป็นชื่อโปรเจกต์จริงแทน node
  • กรองเฉพาะโปรเซสของผู้ใช้: ใช้ตัวเลือก -u เพื่อตัดโปรเซสระบบออกและดูเฉพาะที่ฉันรันไว้
  • ปิดโปรเซส: ใช้ ports bye 3000 เพื่อ kill โปรเซสของพอร์ตนั้นได้ทันที

การติดตั้ง

brew tap givvemee/tap  
brew install ports-cli  

วิธีใช้งาน

ports              # แสดงพอร์ตที่กำลัง listening ทั้งหมด  
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 script โดยไม่มี dependency เพิ่มเติม

ยินดีรับฟีดแบ็ก :)

6 ความคิดเห็น

 
channprj 2026-01-26

โอ้ มีฟีเจอร์อำนวยความสะดวกอยู่เหมือนกันนะ 👍🏻

สำหรับ 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"

 
givvemee 2026-01-27

อ้อ แบบนี้นี่เอง คุณสร้าง alias portcheck ไว้ใช้แบบนี้นี่เองนะครับ วิธีแบบนี้ก็น่าสนใจเหมือนกัน ขอบคุณครับ!

 
channprj 2026-01-27

มีปัญหาเรื่องเครื่องหมายอัญประกาศคู่ จึงขอแชร์อีกครั้ง

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'

 
chcv0313 2026-01-22

อยากรู้ว่ามันดีกว่า sudo netstat -tnlp ตรงไหน

 
channprj 2026-01-26

พอได้ลองใช้แล้วจะรู้ว่ามันแสดงผลได้เป็นระเบียบมากกว่า
ยังมีฟังก์ชันกรองให้ดูเฉพาะโปรเซสที่ผู้ใช้กำลังใช้งานอยู่ได้ด้วย

 
yshrust 2026-01-21

โอ้ ผมติดตั้งแล้วลองใช้ได้เลย ใช้งานง่ายดีมากครับ!!
ขอบคุณครับ 555