NetHogs là một tiện ích dòng lệnh mã nguồn mở giúp quản trị viên theo dõi từng tiến trình đang sử dụng băng thông thời gian thực, mang lại góc nhìn trực quan và chi tiết về hoạt động mạng. Trong bài viết này, mình sẽ giúp bạn hiểu rõ khái niệm, tính năng nổi bật và cách vận hành NetHogs để chẩn đoán và khắc phục sự cố liên quan đến hiệu suất mạng.
Những điểm chính
- Khái niệm NetHogs: Biết được NetHogs là gì và cách công cụ này giúp bạn xác định chính xác ứng dụng nào đang tiêu tốn nhiều băng thông mạng.
- Nguyên lý hoạt động: Hiểu cách NetHogs liên kết gói tin với tiến trình để kiểm soát lưu lượng hệ thống một cách minh bạch và hiệu quả.
- Tính năng nổi bật: Nắm rõ các thế mạnh như giám sát thời gian thực và hỗ trợ đa giao diện để tối ưu hóa việc chẩn đoán sự cố mạng.
- Cú pháp và tùy chọn: Thành thạo các tham số lệnh giúp bạn linh hoạt tinh chỉnh đơn vị hiển thị, độ trễ và cách thức ghi log dữ liệu.
- Cách dùng NetHogs: Biết cách cài đặt và thực thi lệnh để theo dõi chi tiết lưu lượng tải lên/tải xuống của từng tiến trình cụ thể.
- Các công cụ thay thế: Khám phá thêm các giải pháp giám sát băng thông hữu ích khác giúp bạn quản trị hạ tầng mạng toàn diện hơn.
- Giải đáp thắc mắc (FAQ): Nhận được lời giải đáp về khả năng xuất báo cáo, giám sát nhiều card mạng và tính ổn định của NetHogs trên môi trường ảo hóa.
NetHogs là gì?
NetHogs là một công cụ giám sát mạng mã nguồn mở chạy trên dòng lệnh, dành cho các hệ điều hành Linux và tương tự Unix. Chức năng chính của Nethogs là hiển thị băng thông mạng đang được sử dụng bởi từng tiến trình (process) hoặc ứng dụng riêng lẻ trên hệ thống, thay vì theo giao thức hoặc mạng con như các công cụ thông thường.
Điều này giúp quản trị viên hệ thống nhanh chóng xác định chính xác chương trình hoặc dịch vụ nào đang “ngốn” băng thông mà không cần tra cứu ID tiến trình (PID) một cách thủ công. Nethogs giúp người dùng dễ dàng xác định ứng dụng nào đang tiêu thụ nhiều băng thông nhất trong thời gian thực, từ đó hỗ trợ việc chẩn đoán và khắc phục sự cố liên quan đến hiệu suất mạng.

Cách Nethogs hoạt động
Nethogs hoạt động bằng cách giám sát lưu lượng truy cập mạng ở cấp độ giao diện và sau đó liên kết các gói tin (packets) với các tiến trình đang chạy trên hệ thống.
- Nethogs sử dụng thư viện libpcap để “nghe” (sniff) các gói tin đi qua các giao diện mạng.
- Khi một gói tin được bắt giữ, Nethogs sẽ kiểm tra thông tin về cổng (port) và địa chỉ IP của gói tin đó.
- Sau đó, Nethogs truy vấn hệ điều hành để tìm ra tiến trình nào đang sử dụng cổng và địa chỉ IP đó, từ đó xác định được ứng dụng gửi hoặc nhận gói tin.
- Bằng cách tổng hợp dữ liệu này, Nethogs có thể hiển thị lượng băng thông tiêu thụ cho từng tiến trình một cách riêng biệt.
Tính năng nổi bật của Nethogs
Nethogs cung cấp nhiều tính năng giúp người dùng quản lý và giám sát băng thông mạng hiệu quả:
- Giám sát băng thông theo tiến trình: Nethogs hiển thị tốc độ tải lên (upload) và tải xuống (download) của từng tiến trình đang chạy trên hệ thống. Điều này cho phép người dùng biết chính xác ứng dụng nào đang sử dụng tài nguyên mạng.
- Hiển thị thời gian thực: Nethogs cung cấp dữ liệu cập nhật liên tục, cho phép người dùng theo dõi biến động lưu lượng mạng ngay lập tức.
- Hỗ trợ giao diện dòng lệnh: Người dùng có thể dễ dàng chạy Nethogs từ Terminal, rất tiện lợi cho quản trị viên máy chủ hoặc những người làm việc trong môi trường dòng lệnh.
- Phát hiện nguyên nhân tiêu thụ băng thông: Bằng cách hiển thị rõ ràng ứng dụng nào đang chiếm dụng mạng, Nethogs giúp người dùng nhanh chóng xác định các tiến trình bất thường (ví dụ: phần mềm độc hại, cập nhật ngầm, tải xuống lớn) và đưa ra biện pháp xử lý kịp thời.
- Hỗ trợ nhiều giao diện mạng: Nethogs có khả năng giám sát lưu lượng trên nhiều giao diện mạng khác nhau (ví dụ: ethe, wlane), cho phép người dùng theo dõi toàn bộ hoạt động mạng của hệ thống.
- Sắp xếp và lọc dữ liệu: Nethogs cho phép người dùng sắp xếp các tiến trình theo mức độ sử dụng băng thông hoặc lọc theo các tiêu chí khác, giúp tập trung vào các ứng dụng quan trọng.

Cú pháp và các tùy chọn phổ biến của lệnh NetHogs
Cú pháp tổng quát của lệnh như sau:
sudo nethogs [tùy chọn] [tên_interface]Trong đó:
- sudo: Quyền quản trị tối cao là bắt buộc vì nethogs cần truy cập trực tiếp vào các giao diện mạng và bảng tiến trình của hệ thống.
- [tùy chọn]: Các tham số bổ sung để thay đổi cách hiển thị hoặc hành vi của lệnh.
- [tên_interface]: Tên của card mạng bạn muốn theo dõi (ví dụ: eth0, wlan0, enp0s3). Nếu bỏ trống, lệnh sẽ mặc định theo dõi tất cả các giao diện mạng đang hoạt động.
Dưới đây là một số tham số phổ biến của lệnh NetHogs giúp người dùng tinh chỉnh giao diện hiển thị và cách thức hoạt động của công cụ để phù hợp hơn với nhu cầu giám sát cụ thể:
| Tham số | Cú pháp ví dụ | Chức năng |
|---|---|---|
-d | $nethogs -d 5 | Thiết lập độ trễ cho mỗi lần làm mới màn hình, tính bằng giây. Ví dụ, tùy chọn này sẽ khiến NetHogs cập nhật thông tin mỗi 5 giây. Giá trị mặc định là 2 giây. |
-V | $nethogs -V | Yêu cầu NetHogs hiển thị thông tin phiên bản (version) hiện tại của công cụ và thoát ngay lập tức. |
-h | $nethogs -h | Hiển thị một danh sách các lệnh và tham số sử dụng có sẵn, cung cấp một tài liệu tham khảo nhanh cho người dùng. |
-p | $nethogs -p | Kích hoạt chế độ promiscuous theo dõi lưu lượng mạng mà không cần card mạng phải trực tiếp nhận gói tin đó (không khuyến khích dùng thường xuyên). |
-t | sudo nethogs -t | Chế độ truy vết (tracemode): Hiển thị danh sách kết nối theo dạng dòng nối tiếp, không xóa màn hình (thích hợp để ghi log). |
-v | sudo nethogs -v 3 | Thay đổi đơn vị đo lường: 0 = KB/s, 1 = tổng KB, 2 = tổng B, 3 = tổng MB. |
-c | sudo nethogs -c 10 | Giới hạn số lần cập nhật. Sau khi cập nhật đủ số lần (ví dụ 10 lần), lệnh sẽ tự thoát. |
-a | sudo nethogs -a | Theo dõi cả các thiết bị không hiển thị hoặc các thiết bị ảo/loopback. |
Cách dùng lệnh nethogs để giám sát lưu lượng mạng trên tiến trình
Bước 1: Cài đặt nethogs
nethogs thường không được cài đặt sẵn, nhưng bạn hoàn toàn có thể cài đặt nethogs một cách dễ dàng với quyền root hoặc sudo:
- Trên Debian/Ubuntu:
sudo apt-get update && sudo apt-get install nethogs- Trên CentOS/RHEL/Fedora:
sudo yum install nethogs Hoặc trên các phiên bản mới hơn:
sudo dnf install nethogsBước 2: Khởi chạy và quan sát
Để bắt đầu, bạn chỉ cần chạy lệnh nethogs. Tuy nhiên, cách tốt nhất là chỉ định rõ card mạng bạn muốn theo dõi.
# Lệnh này cần quyền sudo để có thể giám sát traffic mạng
sudo nethogs eth0Bạn hãy thay eth0 bằng tên card mạng thực tế của bạn, ví dụ: ens18, eno1,… Ngay sau đó, nethogs sẽ hiển thị một giao diện cập nhật theo thời gian thực, liệt kê các process đang sử dụng mạng.
Bước 3: Phân tích kết quả

Giao diện của nethogs rất trực quan, dưới đây là ý nghĩa của các cột chính:
- PID: Process ID – Mã số định danh của tiến trình, là manh mối quan trọng nhất để bạn điều tra sâu hơn.
- USER: Người dùng đã khởi chạy tiến trình đó (ví dụ:
root,nginx,mysql). - PROGRAM: Tên của chương trình và các tham số của nó. Cột này cho bạn biết chính xác ứng dụng nào đang gây ra traffic.
- DEV: Device – Card mạng mà traffic đang đi qua (ví dụ:
eth0). - SENT: Lượng traffic gửi đi từ server của bạn (Upload), tính bằng KB/giây.
- RECEIVED: Lượng traffic nhận vào server của bạn (Download), tính bằng KB/giây.
Khi nethogs đang chạy, bạn có thể sử dụng các phím tắt sau để tương tác:
s: Sắp xếp danh sách theo lượng traffic SENT (gửi đi), giúp bạn tìm ra process nào đang upload nhiều nhất.r: Sắp xếp danh sách theo lượng traffic RECEIVED (nhận vào), giúp bạn tìm ra process nào đang download nhiều nhất.m: Chuyển đổi đơn vị hiển thị giữa KB/s, KB, B, và MB.q: Thoát khỏinethogs.
Các công cụ giám sát băng thông mạng hữu ích khác
nethogs là công cụ xác định băng thông theo process rất hữu ích, nhưng để có thể giám sát một cách tổng quan, bạn có thể kết hợp với:
iftop: Công cụ này hiển thị băng thông theo kết nối (giữa IP nguồn và IP đích).vnstat: Cung cấp thống kê lịch sử sử dụng băng thông theo ngày, tháng.- netstat hoặc ss (Socket Stats): Được sử dụng để phân tích và hiển thị thông tin chi tiết về các kết nối mạng, sockets và bảng định tuyến, nhưng không chuyên về giám sát băng thông thời gian thực.
- top: Công cụ để theo dõi các tiến trình đang hoạt động, nhưng chủ yếu tập trung vào CPU và bộ nhớ, không cung cấp chi tiết về băng thông.
- iptraf-ng: Một tiện ích giám sát mạng toàn diện trên giao diện lệnh, cung cấp thông tin chi tiết về lưu lượng IP, thống kê giao diện,…
- darkstat: Một công cụ phân tích lưu lượng mạng chạy nền, thu thập dữ liệu trong thời gian dài và trình bày kết quả qua một giao diện web.
- bandwhich: Một công cụ hiện đại khác với mục tiêu tương tự NetHogs, giúp hiển thị việc sử dụng băng thông theo tiến trình, kết nối và tên DNS từ xa.
- gnethogs và nethogs-qt: Đây là các giao diện đồ họa (GUI) được xây dựng dựa trên NetHogs, mang lại trải nghiệm thân thiện hơn cho những người dùng không quen thuộc với dòng lệnh.

Câu hỏi thường gặp
NetHogs có hỗ trợ giám sát băng thông trên nhiều interface mạng cùng lúc không?
NetHogs có thể giám sát song song nhiều card mạng bằng cách liệt kê tên các interface khi chạy lệnh, ví dụ:sudo nethogs eth0 wlan0Công cụ sẽ hiển thị lưu lượng mạng theo từng tiến trình trên cả các interface này trong cùng một phiên làm việc.
Có thể xuất báo cáo hoặc log dữ liệu lưu lượng từ NetHogs ra file để phân tích sau không?
NetHogs chưa hỗ trợ xuất báo cáo chi tiết dưới dạng file log một cách trực tiếp như các công cụ chuyên nghiệp khác. Tuy nhiên, bạn vẫn có thể kết hợp lệnh xuất đầu ra từ cửa sổ terminal sang file text để ghi lại các thông tin theo thời gian thực nếu cần.
NetHogs vận hành ổn định trên môi trường ảo hóa như VPS/KVM hay cần cấu hình bổ sung nào đặc biệt?
NetHogs hoạt động tốt trên hầu hết các môi trường VPS/KVM khi server sử dụng Linux và cấp quyền root đủ để truy cập vào thông tin /proc. Không cần cấu hình đặc biệt, chỉ cần đảm bảo card mạng đã nhận diện chính xác (thường là eth0, ens18…).
Nethogs là công cụ hiệu quả giúp bạn quản lý băng thông chi tiết theo từng tiến trình đang chạy trên Linux. Qua các bước cài đặt và lệnh thực thi đã hướng dẫn, bạn có thể xác định chính xác ứng dụng nào đang chiếm dụng tài nguyên mạng và xử lý sự cố mạng nhanh chóng. Để tìm hiểu thêm các câu lệnh quản trị hệ thống khác, bạn có thể tham khảo một số bài viết sau:




