Contents

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

Truy cập internet là bắt buộc; tuy nhiên, người ta có thể hỏi ứng dụng Linux nào tiêu tốn nhiều dung lượng mạng nhất trên thiết bị của họ. Rất may, một số công cụ Linux thông thường tạo điều kiện thuận lợi cho việc xác định các quy trình làm cạn kiệt băng thông của bạn. Dưới đây là danh sách các chương trình như vậy:

nethogs

/vi/images/nethogs-transmission.jpg

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 ảnh chụp nhanh về quá trình nào đang truy cập mạng.

Theo cách tương tự với các công cụ như top, htop hoặc atop, nethogs hoạt động ở chế độ toàn màn hình và làm mới định kỳ để cung cấp tổng quan cập nhật về các kết nối mạng được quy cho các quy trình riêng lẻ.

Việc lấy nethogs có thể được thực hiện dễ dàng bằng cách sử dụng trình quản lý gói, giúp đơn giản hóa quy trình một cách đáng kể.

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

 sudo apt install nethogs 

Và trên Arch Linux:

 sudo pacman -S nethogs 

Về gia đình Mũ Đỏ:

 sudo dnf install nethogs 

Để thực thi nethogs thành công, người dùng bắt buộc phải có quyền quản trị bằng cách được cấp quyền truy cập root.

 sudo nethogs 

Người ta có thể định cấu hình nethogs để được thực thi bởi một người dùng thông thường thông qua việc thực thi lệnh sau:

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

Để sử dụng nethogs, cần phải cung cấp đường dẫn đầy đủ của tệp thực thi của nó bằng cách thay thế “/path/to/nethogs” trong dòng lệnh bằng đường dẫn thực có được thông qua một phương pháp chẳng hạn như sử dụng lệnh’what’. Điều này đảm bảo rằng chương trình được định vị và thực thi chính xác.

 which nethogs 

lsof

/vi/images/lsof-network.jpg

Mặc dù lsof phục vụ như một tiện ích để lập danh mục các tệp đang mở, nhưng nó cũng thành thạo không kém trong việc xác định các kết nối mạng mở. Bằng cách sử dụng tùy chọn -i , người dùng có thể có được danh sách toàn diện các kết nối internet hiện đang được duy trì bởi các quy trình đang hoạt động trong hệ điều hành. Do thực tế là trong các hệ thống dựa trên Linux, ngay cả các đối tượng không phải tệp cũng được xử lý như vậy, tính năng này trở nên đặc biệt đáng chú ý.

Để xem danh sách hiện tại các kết nối internet đang hoạt động trên máy tính của bạn, bạn có thể sử dụng lệnh sau trong cửa sổ nhắc lệnh hoặc thiết bị đầu cuối:

 lsof -i 

Việc sử dụng lệnh “lsof” có thể cung cấp thông tin liên quan đến các quy trình duy trì kết nối internet đang hoạt động, bao gồm ID quy trình (PID), bộ mô tả tệp, loại kết nối internet, kích thước, giao thức và tên tệp chính thức được liên kết.

Tính khả dụng của các tùy chọn -i4 -i6 cho phép người dùng giám sát các kết nối mạng bằng Giao thức Internet phiên bản 4 (IPv4) hoặc Giao thức Internet phiên bản 6 (IPv6).

Rất có khả năng là bạn đã cài đặt Lsof, vì nó được cài đặt sẵn trong nhiều bản phân phối Linux hoặc có thể dễ dàng cài đặt trên những bản không có 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 

mạng

/vi/images/netstat-processes.jpg

Netstat là một tiện ích đặc biệt mạnh mẽ giúp người dùng có khả năng phân biệt các kết nối mạng đang hoạt động trong hệ thống của họ. Tuy nhiên, nó không cung cấp thông tin liên quan đến các quy trình cụ thể mà các kết nối này được liên kết. Tương tự như lsof, người ta có thể có được những chi tiết như vậy bằng cách sử dụng tùy chọn dòng lệnh.

Netstat là một thành phần có trong bộ công cụ mạng, có thể dễ dàng cài đặt trên một loạt các bản phân phối Linux thông qua việc sử dụng hệ thống quản lý gói tiêu chuẩn đi kèm với mỗi bản phân phối tương ứng.

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

 sudo apt install net-tools

Trên Arch Linux:

 sudo pacman -S net-tools 

Để có được tiện ích netstat trên bản phân phối Linux, chẳng hạn như Fedora, CentOS hoặc RHEL, hãy thực hiện lệnh sau trong thiết bị đầu cuối:

 sudo dnf install net-tools 

Trong cấu hình mặc định của nó, việc thực thi lệnh netstat tại dấu nhắc lệnh cung cấp các chi tiết như giao thức mạng, địa chỉ IP và trạng thái kết nối. Tuy nhiên, bằng cách sử dụng tùy chọn -p , một cột bổ sung sẽ được hiển thị bao gồm mã định danh quy trình và tên tệp thực thi tương ứng được liên kết với mỗi kết nối đang hoạt động.

 netstat -p 

Chạy lệnh “netstat” mà không có bất kỳ tùy chọn bổ sung nào sẽ tạo ra một báo cáo toàn diện nêu chi tiết tất cả các kết nối mạng đang hoạt động tại thời điểm đó trước khi kết thúc thực thi. Bằng cách sử dụng cờ “-c”, một người có thể truy cập vào tài khoản liên tục của các liên kết mạng được cập nhật thường xuyên với dữ liệu mới.

 netstat -pc 

Cách tiếp cận này tương tự như việc sử dụng một ứng dụng phần mềm được thiết kế cho màn hình, chẳng hạn như net hogs, nhưng lợi ích nằm ở việc chuyển kết quả sang một chương trình khác như grep hoặc paginator để kiểm tra kỹ hơn:

 netstat -p | grep 'systemd' 

Để có cái nhìn toàn diện về các kết nối mạng có trên hệ thống của bạn, cần phải thực thi lệnh “netstat” với quyền quản trị, tức là bằng cách chạy lệnh với tư cách người dùng root.

 sudo netstat

Bây giờ bạn có thể xem ứng dụng Linux nào đang ngấu nghiến băng thông của bạn

Linux, tương tự như vô số hệ điều hành hiện đại, thể hiện sự phụ thuộc lẫn nhau sâu sắc với internet. Đôi khi, việc phân biệt quá trình nào đang tiêu tốn băng thông của một người có thể là một thách thức. May mắn thay, các tiện ích như nethogs, lsof và netstat cung cấp sự hỗ trợ vô giá trong việc xác định các quy trình duy trì các kết nối mạng đang hoạt động.

Trong một số trường hợp nhất định, hành vi bất thường có thể xảy ra bất chấp các liên kết đã được thiết lập. Trong lĩnh vực hệ điều hành Linux, nhiệm vụ đơn giản là chấm dứt bất kỳ quy trình cố chấp nào có thể phát sinh.