Cách giám sát việc sử dụng mạng cho các tiến trình Linux

Truy cập Internet là điều cần thiết, nhưng bạn có thể thắc mắc các tiến trình Linux nào sử dụng kết nối của bạn nhiều nhất trên máy tính. May mắn thay, với một số tiện ích phổ biến của Linux, việc giám sát quá trình nào sử dụng băng thông của bạn thật dễ dàng. Dưới đây là một số công cụ trong số đó.

1. nethogs

nethogs trong terminal và Transmission chạy trên Linux
nethogs trong terminal và Transmission chạy trên Linux

nethogs là một chương trình thực hiện các kết nối Internet giống như htop hoặc top thực hiện đối với việc sử dụng CPU và bộ nhớ. Nó hiển thị cho bạn cái nhìn nhanh chóng về tiến trình nào đang truy cập mạng.

Giống như top, htop hoặc atop, nethogs là chương trình toàn màn hình cập nhật sau vài giây để hiển thị cho bạn các kết nối mạng hiện tại theo tiến trình.

Cài đặt nethogs rất đơn giản. Bạn chỉ cần đi qua trình quản lý gói của mình.

Ví dụ, trên Debian và Ubuntu:

sudo apt install nethogs

Và trên Arch Linux:

sudo pacman -S nethogs

Trên họ Red Hat:

sudo dnf install nethogs

Để chạy nethogs, bạn cần phải root:

sudo nethogs

Có thể thiết lập nó để bạn có thể chạy nethogs như một người dùng thông thường bằng cách sử dụng lệnh này:

sudo setcap "cap_net_admin,cap_net_raw+pe" /path/to/nethogs

Bạn nên thay thế "/path/to/nethogs" bằng tên đường dẫn tuyệt đối của nethogs. Bạn có thể tìm thấy điều này bằng lệnh which:

which nethogs

2. lsof

Đầu ra lsof -i trong Linux terminal 
Đầu ra lsof -i trong Linux terminal

Mặc dù lsof là một tiện ích để liệt kê các file đang mở, nhưng nó cũng có thể liệt kê các kết nối mạng đang mở. Tùy chọn -i liệt kê các kết nối Internet được gắn với những tiến trình đang chạy trên hệ thống. Rốt cuộc, trên Linux, mọi thứ đều là một file.

Để xem các kết nối Internet hiện tại, hãy sử dụng lệnh này:

lsof -i

lsof sẽ hiển thị cho bạn tên của bất kỳ lệnh nào có kết nối Internet đang mở, PID, trình mô tả file, loại kết nối Internet, kích thước, giao thức và tên file chính thức của kết nối.

Sử dụng các tùy chọn -i4 và -i6 cho phép bạn xem các kết nối sử dụng IPv4 hoặc IPv6.

Rất có thể bạn đã cài đặt lsof rồi. Nó cũng dễ dàng cài đặt trên các bản phân phối Linux chính nếu bạn chưa thực hiện.

Trên Debian và Ubuntu, gõ:

sudo apt install lsof

Và trên Arch:

sudo pacman -S lsof

Trên dòng distro Red Hat:

sudo dnf install lsof

3. netstat

Đầu ra netstat -p trong Linux terminal 
Đầu ra netstat -p trong Linux terminal

netstat là một chương trình mạnh mẽ, cho phép bạn xem các kết nối mạng trên hệ thống của mình. Nó không hiển thị cho bạn quá trình kết nối mạng nào được đính kèm. Như với lsof, bạn có thể thấy điều này bằng tùy chọn dòng lệnh.

netstat là một phần của gói công cụ mạng. Bạn có thể cài đặt nó trên hầu hết các bản phân phối Linux bằng trình quản lý gói mặc định.

Ví dụ, trên Debian hoặc Ubuntu:

sudo apt install net-tools

Trên Arch Linux:

sudo pacman -S net-tools

Để cài đặt netstat trên Fedora, CentOS và RHEL, hãy chạy:

sudo dnf install net-tools

Bạn có thể chạy netstat tại dòng lệnh. Theo mặc định, nó sẽ hiển thị cho bạn thông tin như giao thức, địa chỉ và trạng thái của kết nối, nhưng tùy chọn -p thêm một cột hiển thị ID tiến trình và tên lệnh.

netstat -p

Khi bạn chạy nó, netstat sẽ chỉ liệt kê tất cả các kết nối mạng và sau đó thoát ra. Với tùy chọn -c, bạn có thể thấy danh sách các kết nối được cập nhật liên tục:

netstat -pc

Điều này sẽ tương tự như việc sử dụng một chương trình định hướng màn hình như nethogs, nhưng lợi thế của việc thực hiện theo cách này là bạn có thể chuyển kết quả đầu ra sang một chương trình khác như grep hoặc máy nhắn tin để kiểm tra nó:

netstat -p | grep 'systemd'

Để xem tất cả các tiến trình có kết nối mạng trên hệ thống của bạn, bạn có thể phải chạy netstat với quyền root:

sudo netstat
Thứ Sáu, 18/08/2023 09:46
51 👨 324
0 Bình luận
Sắp xếp theo
    ❖ Linux