0

[Tips] Đang Code Mà Bị "Port Is Already In Use" Thì Xử Lý Thế Nào Cho Ngầu?

Chào anh em, chuyện là thế này...

Chắc hẳn ai làm Web Developer cũng từng ít nhất một lần rơi vào tình cảnh trớ trêu: Vừa hí hửng gõ npm run dev hay php artisan serve thì đùng một cái, màn hình hiện đỏ lòm dòng chữ:

Error: listen EADDRINUSE: address already in use :::3000

image.png

Cảm giác lúc đó kiểu: "Ơ, mình đã bật gì đâu nhỉ?". Thế là bắt đầu công cuộc đi tìm "kẻ thủ ác" nào đang chiếm giữ cổng (port) yêu thích của mình. Thay vì khởi động lại máy (cách "tối thượng" nhưng hơi mất thời gian), hôm nay mình sẽ chia sẻ vài chiêu thức để anh em "truy vết" và xử lý gọn ghẽ mấy cái port lỳ lợm này trên cả Windows và Linux/macOS nhé.

1. Đối với anh em hệ Windows (Command Prompt/PowerShell)

Trên Windows, chúng ta có một tổ hợp lệnh khá lợi hại. Anh em mở CMD hoặc PowerShell (quyền Admin nhé) và thực hiện 2 bước sau:

Bước 1: Tìm PID (Process ID) của kẻ đang chiếm port

Giả sử bạn đang bị chiếm port 8080, hãy gõ:

netstat -ano | findstr :8080

image.png

Lúc này, bạn sẽ thấy một dòng kết quả hiện ra, hãy chú ý vào con số ở cuối cùng. Đó chính là PID của ứng dụng đang "ăn vụng" port của bạn.

Bước 2: Xem nó là ai và "tiễn khách"

Nếu muốn biết chắc chắn đó là app nào trước khi giết nhầm, bạn gõ:

tasklist /fi "pid eq <Số_PID_vừa_tìm_được>"

image.png

Và để kết thúc sự chịu đựng, "kill" nó luôn bằng lệnh:

taskkill /PID <Số_PID_vừa_tìm_được> /F

image.png

2. Đối với anh em hệ Linux/macOS (Terminal)

Dân dùng Unix thì thường có sẵn những công cụ "xịn xò" hơn như lsof (List Open Files).

Cách nhanh nhất:

Mở Terminal và gõ:

sudo lsof -i :3000

(Thay 3000 bằng port bạn đang gặp vấn đề).

Kết quả sẽ trả về một bảng cực kỳ chi tiết từ tên ứng dụng (COMMAND), PID cho đến User đang chạy.

Cách xử lý: Khi đã có PID rồi, anh em chỉ cần tung một chiêu duy nhất:

kill -9 <PID>

Dấu -9 ở đây là để ép buộc ứng dụng phải đóng ngay lập tức, cực kỳ hiệu quả với những thanh niên "cứng đầu".

3. Cách cho anh em "lười" gõ lệnh (Giao diện đồ họa)

Nếu bạn không thích nhớ câu lệnh phức tạp thì vẫn có cách trực quan hơn:

Windows: Chuột phải vào Thanh Taskbar -> Task Manager -> Qua tab Details. Tại đây bạn có thể nhấn vào cột PID để sắp xếp và tìm số PID mình vừa tra được ở bước trên, sau đó nhấn End Task.

macOS: Sử dụng ứng dụng Activity Monitor có sẵn, tìm kiếm theo tên hoặc PID cũng rất nhanh.

Lời kết

Việc bị trùng port là chuyện "như cơm bữa" trong quá trình làm dev, đặc biệt là khi anh em chạy nhiều dự án Microservices cùng lúc hoặc khi tắt server không đúng cách khiến nó bị chạy ngầm (zombie process). Hy vọng vài mẹo nhỏ này giúp anh em tiết kiệm được vài phút cuộc đời để tập trung vào việc quan trọng hơn: Fix Bug!

Nếu thấy bài viết hữu ích, đừng quên tặng mình 1 Upvote và Clip bài viết lại để dành khi cần nhé! Anh em thường dùng cách nào khác không? Cùng comment thảo luận bên dưới nha.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí