- vừa được xem lúc

Xử lý vấn đề "Port Already in Use" trên Linux và Windows

0 0 63

Người đăng: Minh Tuấn Ngụy

Theo Viblo Asia

Hi chào các bạn, dạo này mình hay gặp vấn đề Port Already in Use trên Windows do mình sử dụng hơi nhiều chương trình cùng một lúc, tức là mình không thể mở chương trình vì đang có chương trình khác chiếm port đó rồi. Cái này khá là khó chịu, đôi khi bạn không biết chương trình nào đang sử dụng port đấy để mà tắt đi. Nay mình sẽ hướng dẫn các bạn xử lý vấn đề này nhé

Mình thấy có 2 cách xử lý chính:

  • Bạn đang cần mở chương trình A sử dụng port 8080, tuy nhiên chương trình B đã chiếm port 8080 từ bao giờ rồi. Vậy bạn có thể tắt chương trình B đi để mở được chương trình A
  • Tình huống như bên trên, tuy nhiên bạn có thể config lại chương trình A sử dụng port khác đang trống để khởi động chương trình A lên

Cá nhân mình thấy (và mình đã gặp rất nhiều trường hợp) việc config lại port default mất khá nhiều thời gian, config lại chương trình đó xong nó kéo theo các vấn đề khác nữa nên khá là mệt. Cho nên mình thường xem xét chương trình B mình có cần sử dụng nữa không thì tắt quách nó đi. Tuy nhiên giữa 1 đống service, 1 đống chương trình đang chạy ngầm thì bạn không biết được chương trình nào đang sử dụng cái port kia để tắt đi đúng không, sau đây mình sẽ hướng dẫn các bạn kiểm tra xem port đó đang chạy với chương trình nào nhé

Đối với Linux

Ví dụ ở đây mình đang sử dụng port 8081 để mở http.server trên python

┌──(minhtuan㉿MinhTuan-ACER)-[~]
└─$ python3 -m http.server 8080 130 ⨯
Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...

Giờ mình quên mất là mình đang mở nó, có rất nhiều cách để kiểm tra

Cách 1: netstat

Sử dụng lệnh netstat -paten để kiểm tra các port đang sử dụng

┌──(minhtuan㉿MinhTuan-ACER)-[/mnt/c/Users/minht]
└─$ sudo netstat -paten
[sudo] password for minhtuan:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1000 16551 77/python3

Kiểm tra đã thấy port 8080 đang được sử dụng bởi PID=77, chương trình python3
Kill PID 77 đi là chúng ta có thể sử dụng port 8080 rồi ? (nhớ dùng quyền sudo đó nhé)

sudo kill -9 77

Cách 2: fuser

Có cách khác là sử dụng lệnh fuser, tuy nhiên lệnh này không show cho chúng ta program name là gì nhưng các bạn có thể sử dụng

┌──(minhtuan㉿MinhTuan-ACER)-[/mnt/c/Users/minht]
└─$ sudo fuser 8081/tcp 18081/tcp: 77

Kill tương tự lệnh kill bên trên, hoặc sử dụng lệnh sudo fuser -k 8080/tcp là kill process được ?

Cách 3: lsof

List các process đang lắng nghe port 8080:

┌──(minhtuan㉿MinhTuan-ACER)-[/mnt/c/Users/minht]
└─$ sudo lsof -i:8080 1 ⨯
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python3 77 minhtuan 3u IPv4 16551 0t0 TCP *:tproxy (LISTEN)

Kill toàn bộ process đang lắng nghe ở port 8080:

sudo kill $(lsof -t -i:8080)

Đối với Windows

Windows thì phức tạp hơn một chút, cũng sẽ có lệnh cho các bạn sử dụng, tuy nhiên người dùng Windows không hay gõ lệnh lắm mà sử dụng giao diện, mình sẽ giới thiệu cả 2 cách nhé

Sử dụng Task Manager

Mở Task Manager bằng cách chuột phải vào startbar và chọn Task Manager
Mở giao diện Resource Monitor bằng cách chọn tab Performance và chọn nó

Sang tab Network

Ở đây có thể check được những port nào đang mở, PID chương trình đang sử dụng port đó là bao nhiêu, tuy nhiên mình không thể kill PID ở màn hình này được, cần chuyển sang tab Details của Task Manager

Xác định được PID nào bạn muốn kill thì chuột phải chọn End task là xong

Sử dụng Command line

Tương tự như với Linux, Windows cũng có thể sử dụng command line để tìm kiếm và kill process
Vẫn sử dụng netstat

➜ ~ netstat -aon | findstr "8080" TCP 127.0.0.1:6767 127.0.0.1:8080 ESTABLISHED 16792 TCP 127.0.0.1:8080 0.0.0.0:0 LISTENING 2408 TCP 127.0.0.1:8080 127.0.0.1:6767 ESTABLISHED 2408

Cột cuối cùng chính là giá trị của PID, kill PID sử dụng câu lệnh bên dưới

➜ ~ taskkill /PID <process_id> /F

Khác

Đối với Windows thì có nhiều phần mềm có thể hiển thị và giúp chúng ta check rồi kill process dễ dàng hơn, các bạn có thể sử dụng những phần mềm đó, tuy nhiên vẫn cần phải đảm bảo an toàn nhé.

Kết

Qua đây là một vài cách mà các bạn có thể tìm kiếm, kiểm tra và kill những process không cần thiết đang chiếm port của mình. Cảm ơn các bạn đã đọc tới đây ?. Hẹn gặp lại.

Bình luận

Bài viết tương tự

- vừa được xem lúc

GWSL - Giải pháp tốt nhất GUI trên WSL2 năm 2020.

. Bài viết được đăng lại từ blog của mình https://kikiguru.com. . Hoàn cảnh của mình.

0 0 37

- vừa được xem lúc

Test thử ba loại API chụp màn hình Windows

Hiện tại, Windows cung cấp khoảng ba cách để chụp màn hình. Thế thì cái nào là nhanh nhất? Tôi muốn test thử từng cái.

0 0 70

- vừa được xem lúc

Những thủ thuật trên Windows 10

1. Hỗ trợ Desktop ảo. . Ở Windows 10 có 1 tính năng khá là hữu ích đó là có thể tạo được 1 hoặc nhiều desktop ảo.

0 0 27

- vừa được xem lúc

Khôi phục phân vùng(Partition) ổ đĩa bị xóa bằng Aomei Partition Assistant

Vào một ngày đẹp trời như bao ngày khác, bạn mở máy tính lên và không tìm thấy dữ liệu cũng như mất đi một ổ đĩa. Một cảm giác thật khó tả! Trong quá trình sử dụng máy tính chúng ta khó có thể tránh k

0 0 50

- vừa được xem lúc

Giới Thiệu Về Elastic Search - PHẦN 2: Cài đặt Elastic Search trên windows và truy vấn cơ bản

1. Lời Mở Đầu.

0 0 403

- vừa được xem lúc

Quên Mac hay Windows đi, chân ái là đây - Hướng dẫn thiết lập Ubuntu cho developer

Cái tiêu đề nghe nổ quá phải không? Nhưng không đâu, bạn hãy đọc hết bài viết này đi. Chuyện là gần đây mình vừa mới lựa chọn bỏ vị trí .

0 0 48