ข้ามไปเนื้อหาหลัก

แก้ปัญหา Port 3000 ไม่ว่าง บน Mac ด้วยคำสั่ง lsof และ Binnacle

เจอข้อความ EADDRINUSE บน Mac ใช่ไหม วิธีเช็คและปิดพอร์ต 3000 ที่ค้างอยู่ด้วยคำสั่ง Terminal หรือเครื่องมือเสริม Binnacle สำหรับนักพัฒนา

เรียบเรียงโดย AI
Inewgen
05 Nov 2026ที่มา: Dev.to3 นาทีอ่าน (0 ครั้ง)
แชร์
แก้ปัญหา Port 3000 ไม่ว่าง บน Mac ด้วยคำสั่ง lsof และ Binnacle

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ขนาดตัวอักษร
  • ปัญหา Port 3000 ไม่ว่างเกิดจากเซิร์ฟเวอร์เดิมที่ปิดไม่สนิท
  • คำสั่ง lsof และ kill ช่วยจัดการพอร์ตบน macOS ได้ทันทีโดยไม่ต้องติดตั้งโปรแกรมเพิ่ม
  • เครื่องมือ Binnacle ช่วยจัดการพอร์ตผ่านหน้าจอ Command Deck และปุ่มลัด ⌘K
  • แอปพลิเคชัน Binnacle รองรับ macOS 14 ขึ้นไป พร้อมระบบทดลองใช้ 14 วัน

เวลาที่นักพัฒนาพยายามรันคำสั่ง npm run dev แล้วเจอข้อความแสดงข้อผิดพลาด EADDRINUSE: address already in use :::3000 มักสร้างความหงุดหงิดไม่น้อย ต้นเหตุส่วนใหญ่มาจากเซิร์ฟเวอร์พัฒนาที่หลงลืมไว้ อาจมาจากแท็บเทอร์มินัลที่ปิดไปเมื่อวาน หรือสคริปต์ที่ทำงานค้างไว้ บทความนี้จะมาแนะนำวิธีค้นหาและปิดกระบวนการที่ครอบครองพอร์ตอยู่นี้ เริ่มต้นด้วยเครื่องมือที่มีติดมากับเครื่อง Mac ก่อน แล้วจึงพูดถึงวิธีที่สะดวกยิ่งขึ้นในภายหลัง

ขั้นตอนแรกคือการตรวจสอบว่าโปรเซสใดกำลังใช้งานพอร์ตดังกล่าวอยู่ โดยใช้คำสั่งใน Terminal ดังนี้

lsof -nP -iTCP :3000 -sTCP :LISTEN

การใส่แฟล็ก (-n และ -P) มีความสำคัญมากเพราะช่วยข้ามการค้นหา DNS และชื่อบริการ ทำให้ทำงานได้อย่างรวดเร็ว ส่วน -iTCP:3000 และ -sTCP:LISTEN จะกรองเฉพาะซ็อกเก็ตที่กำลังฟังอยู่เท่านั้น ทำให้เราไม่ต้องเห็นไคลเอนต์ทุกตัวที่เชื่อมต่อเข้ามา

terminal code command line screen

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ผลลัพธ์ที่ได้จะเป็นตารางข้อมูล คอลัมน์ PID คือสิ่งที่เราต้องใช้งาน ต่อมาคือการสั่งปิดโปรเซสดังกล่าวด้วยคำสั่ง:

kill 48213

ไม่อยากพลาดข่าวใหม่?

สมัครรับสรุปข่าวสารใหม่ทางอีเมล ไม่บ่อยจนรำคาญ

โฆษณา

คำสั่ง kill ปกติจะส่งสัญญาณ SIGTERM ซึ่งช่วยให้กระบวนการสามารถเคลียร์ตัวเองได้ หากรอสักครู่แล้วรันคำสั่ง lsof อีกครั้งแต่พอร์ตยังไม่ถูกปล่อย ค่อยใช้คำสั่ง kill -9 48213 เพื่อบังคับปิดทันทีโดยไม่มีการถามซ้ำ ซึ่งควรใช้เป็นวิธีสำรองไม่ใช่ทางเลือกแรก

การเข้าใจกลไกเบื้องหลังของพอร์ต 3000 เป็นสิ่งสำคัญสำหรับนักพัฒนาเว็บ เนื่องจากพอร์ตนี้เป็นค่าเริ่มต้นยอดนิยมของเฟรมเวิร์กอย่าง React, Next.js หรือ Vite การที่พอร์ตถูกจองไว้มักเกิดจากการรันหลายโปรเจกต์พร้อมกัน การเรียนรู้คำสั่ง lsof จึงเป็นทักษะพื้นฐานที่ช่วยประหยัดเวลาได้มากโดยไม่ต้องรีสตาร์ทเครื่องคอมพิวเตอร์ใหม่

แม้กระบวนการสองขั้นตอนนี้จะใช้งานได้ดี แต่มักจะมีปัญหาเรื่องการจดจำแฟล็กคำสั่งเพิ่มเติมเพื่อหาไดเรกทอรีทำงาน เช่น การใช้คำสั่ง lsof -a -p 48213 -d cwd เพื่อดูว่าโปรเจกต์นั้นตั้งอยู่ที่โฟลเดอร์ใด ซึ่งเป็นเหตุผลที่นักพัฒนาสร้างเครื่องมือทางเลือกขึ้นมา

Binnacle เป็นมอนิเตอร์กิจกรรมบน Mac ที่ทำงานอยู่บนเมนูบาร์และมีหน้าต่างคอนโซลที่เรียกว่า Command Deck โดยมีฟีเจอร์หลักในการจัดการพอร์ตที่ค้างอยู่ สรุปได้ดังนี้:

  • ชุดคำสั่ง ⌘K: เปิดหน้าต่าง Deck กด ⌘K แล้วพิมพ์ port 3000 เพื่อดูโปรเซสที่ใช้พอร์ต
  • หน้า Projects: แสดงรายการ dev server จัดกลุ่มตามโฟลเดอร์โปรเจกต์ พร้อมข้อมูลการใช้หน่วยความจำและปุ่ม Stop
14วันทดลองใช้ Binnacle
$9ราคาใบอนุญาตถาวร

สำหรับผู้ที่เจอปัญหานี้เพียงเดือนละครั้ง การใช้คู่คำสั่ง lsof และ kill ก็เพียงพอแล้ว แต่สำหรับผู้ที่รัน dev server หลายตัวพร้อมกัน Binnacle ช่วยให้จัดการได้ง่ายขึ้น ตัวแอปต้องการระบบปฏิบัติการ macOS 14 หรือใหม่กว่า ไม่มีการเก็บข้อมูลการใช้งาน และมีการเชื่อมต่อเครือข่ายเฉพาะตอนตรวจสอบอัปเดตหรือเปิดใช้งานใบอนุญาตเท่านั้น

ที่มา: Dev.to

ความคิดเห็น

แสดงความคิดเห็น
0/2000

พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้