Trong môi trường máy chủ hoặc hệ thống Linux, việc giám sát hiệu suất là một nhiệm vụ quan trọng để đảm bảo sự ổn định, hiệu quả và tối ưu hóa tài nguyên. Từ việc theo dõi mức sử dụng CPU và bộ nhớ đến phân tích hoạt động I/O đĩa và lưu lượng mạng, việc hiểu rõ trạng thái hệ thống là chìa khóa để xác định vấn đề, dự đoán nhu cầu tài nguyên và duy trì một môi trường vận hành mượt mà. Trong bài viết này, mình sẽ cùng bạn tìm hiểu chi tiết về các lệnh Linux Monitor hữu ích, giúp bạn quản lý và duy trì hiệu suất hệ thống hiệu quả.
Những điểm chính
- Chuẩn bị giám sát: Biết được rằng việc giám sát hệ thống Linux rất dễ dàng để bắt đầu, không yêu cầu cấu hình phức tạp.
- Các lệnh và công cụ giám sát thiết yếu: Nắm vững bộ công cụ toàn diện để giám sát mọi khía cạnh của hệ thống, từ tiến trình, CPU, bộ nhớ, I/O đĩa cho đến lưu lượng mạng.
- Bảng tóm tắt các lệnh: Có được một bảng tra cứu nhanh, giúp bạn lựa chọn đúng công cụ cho từng nhu cầu giám sát cụ thể một cách hiệu quả.
- Giải đáp thắc mắc (FAQ): Nhận được câu trả lời cho các vấn đề thực tế như cách chọn công cụ phù hợp, thiết lập cảnh báo tự động và ảnh hưởng của việc giám sát đến hiệu suất.
Chuẩn bị giám sát
Việc giám sát hệ thống Linux không yêu cầu cấu hình phức tạp vì các công cụ và lệnh được thảo luận dưới đây thường có sẵn trong hầu hết các bản phân phối Linux hoặc có thể dễ dàng cài đặt thông qua trình quản lý gói của hệ thống. Điều quan trọng là hiểu rõ chức năng và cách sử dụng của từng công cụ để có thể áp dụng chúng một cách hiệu quả trong các tình huống khác nhau.

Các lệnh và công cụ giám sát hệ thống Linux thiết yếu
1. Giám sát tổng quan và quản lý tiến trình
top
top là một trong những công cụ giám sát hệ thống Linux phổ biến và mạnh mẽ nhất, cung cấp cái nhìn tổng quan theo thời gian thực về các tiến trình đang chạy, mức sử dụng CPU, bộ nhớ, và các thông tin hệ thống khác. Do đó, lệnh này cho phép chẩn đoán nhanh chóng các vấn đề về hiệu suất và xác định các tiến trình gây tốn tài nguyên.
Khi dùng lệnh top, dữ liệu được sắp xếp và làm mới thường xuyên, hiển thị các thông số quan trọng như mức sử dụng CPU (CPU usage), bộ nhớ (Memory usage), bộ nhớ đệm (Swap Memory, Cache Size, Buffer Size), ID tiến trình (Process PID), người dùng (User), và lệnh đang thực thi.
Cú pháp cơ bản:
topCác tùy chọn chính:
- Nhấn P: Sắp xếp các tiến trình theo mức sử dụng CPU (mặc định).
- Nhấn M: Sắp xếp các tiến trình theo mức sử dụng bộ nhớ.
- Nhấn T: Sắp xếp các tiến trình theo thời gian hoạt động.
- Nhấn k: Yêu cầu top gửi tín hiệu kết thúc (kill) đến một tiến trình bằng cách nhập PID của nó.
- Nhấn r: Thay đổi giá trị nice (ưu tiên) của một tiến trình.
- Nhấn 1: Chuyển đổi hiển thị thống kê CPU cho từng lõi CPU (nếu có nhiều lõi).
- Nhấn o hoặc O: Thêm hoặc xóa các cột hiển thị để tùy chỉnh thông tin.
- Nhấn f: Thêm/xóa các trường cột để hiển thị.
- Nhấn q: Thoát
top.

tophtop
htop là công cụ giám sát hệ thống thời gian thực và có tính tương tác, được xem là một phiên bản cải tiến, hiện đại và thân thiện hơn so với lệnh top truyền thống. htop cung cấp một giao diện người dùng trực quan để quản lý các quy trình, hỗ trợ các phím tắt tiện lợi, và cho phép xem danh sách tiến trình theo cả chiều dọc và chiều ngang. Vì là một công cụ của bên thứ ba và không được cài đặt sẵn trên hầu hết các bản phân phối Linux, bạn cần phải tự cài đặt để tải về bằng lệnh sau:
snap install htopCú pháp cơ bản:
htopCác tùy chọn chính và ứng dụng:
- F1: Mở màn hình trợ giúp (Help).
- F2: Truy cập vào menu cài đặt (Setup).
- F3: Tìm kiếm một tiến trình (Search Process).
- F4: Lọc danh sách, chỉ hiển thị các tiến trình có tên khớp với chuỗi bạn nhập (Filter).
- F5: Hiển thị tiến trình dưới dạng cây (Tree).
- F6: Sắp xếp theo một cột cụ thể (Sort by).
- F7/F8: Giảm/Tăng độ ưu tiên của tiến trình (Nice +/-).
- F9: Gửi tín hiệu để kết thúc tiến trình (Kill).
- F10: Thoát khỏi chương trình (Quit).

uptime
Lệnh uptime là một công cụ quan trọng để đánh giá nhanh trạng thái hệ thống, hiển thị thời gian máy đã hoạt động, số người dùng đang đăng nhập và đặc biệt là các giá trị tải trung bình (load average) trong 1, 5 và 15 phút gần nhất. Các giá trị tải trung bình này phản ánh mức độ bận của CPU; khi so sánh chúng với số lõi CPU, bạn có thể nhanh chóng nhận ra hệ thống đang nhàn rỗi, vận hành ở mức hợp lý hay bị quá tải, từ đó có thể đánh giá tổng quan về hiệu năng và áp lực hiện tại của hệ thống.
Cú pháp cơ bản:
uptimeSau khi chạy lệnh uptime, kết quả sẽ hiển thị như sau:

uptime2. Lệnh giám sát tài nguyên bộ nhớ
free
Lệnh free dùng để hiển thị thông tin về tổng dung lượng RAM và bộ nhớ swap (bộ nhớ ảo), bao gồm phần đã sử dụng và còn trống. Mặc định, kết quả được hiển thị theo đơn vị Kibibyte (KiB), khá khó theo dõi. Vì vậy, bạn nên sử dụng tùy chọn -h để chuyển sang định dạng dễ đọc hơn như Megabyte (MB) hoặc Gigabyte (GB).
Cú pháp cơ bản:
free -h-h(human-readable): Hiển thị kích thước bộ nhớ ở định dạng dễ đọc (ví dụ: G, M).
Minh họa thực tế:

free -hKết quả trả về sẽ bao gồm hai dòng chính:
- Mem: Thể hiện thông tin về bộ nhớ vật lý (RAM).
- Swap: Thể hiện thông tin về bộ nhớ hoán đổi (bộ nhớ ảo được ghi trên đĩa).
Lưu ý
vmstat
Lệnh vmstat (Virtual Memory Statistics) cung cấp một báo cáo toàn diện về các hoạt động của hệ thống về tiến trình, bộ nhớ, hoạt động phân trang (paging), I/O đĩa và hoạt động CPU. Khác với top hay free, vmstat thường không có sẵn theo mặc định và cần cài đặt gói sysstat để sử dụng.
Cú pháp cơ bản:
vmstat 1 5- 1: Cập nhật thông tin mỗi 1 giây.
- 5: Thực hiện tổng cộng 5 lần cập nhật.

vmstat 1 5Cú pháp và tùy chọn:
#vmstat: Hiển thị báo cáo cơ bản.#vmstat -S M: Hiển thị kết quả với đơn vị là Megabytes để dễ đọc hơn.#vmstat -s -S M: Cung cấp một bảng thống kê chung và chi tiết về việc sử dụng bộ nhớ.#vmstat -m -S M: Là lệnh được sử dụng để hiển thị thông tin về bộ nhớ slab (slab allocator) của kernel.
3. Lệnh giám sát hệ thống file và đĩa
iostat
Lệnh iostat (Input/Output Statistics) là công cụ chuyên dụng để giám sát hiệu suất hệ thống bằng cách báo cáo các chỉ số thống kê chi tiết về hoạt động vào/ra (I/O) của thiết bị lưu trữ và mức độ sử dụng CPU. Thông qua việc phân tích các tham số như tốc độ đọc/ghi dữ liệu, số lượng yêu cầu mỗi giây và đặc biệt là chỉ số %iowait, quản trị viên có thể nhanh chóng xác định các điểm nghẽn hạ tầng, đánh giá xem ổ cứng có đang bị quá tải hay không để đưa ra phương án tối ưu hóa kịp thời.
Cú pháp cơ bản:
iostat -xz 1 5-x: Hiển thị thống kê mở rộng (bao gồm%util– tỷ lệ bận của thiết bị).-z: Bỏ qua các thiết bị không hoạt động.15: Cập nhật mỗi 1 giây, 5 lần.

iotop
Lệnh iotop hiển thị mức sử dụng I/O đĩa theo thời gian thực cho từng tiến trình, giúp bạn thấy tiến trình nào đang đọc hoặc ghi dữ liệu nhiều nhất. Công cụ này cực kỳ hữu ích trong việc xác định chính xác tiến trình nào đang chiếm dụng nhiều tài nguyên đọc/ghi trên đĩa, giúp quản trị viên nhanh chóng khoanh vùng và xử lý các vấn đề liên quan đến thắt cổ chai hiệu suất của ổ cứng.
Cú pháp cơ bản:
sudo iotopCác phím tắt chính (trong giao diện iotop):
- Nhấn
r: Chuyển đổi giữa sắp xếp theo tổng I/O hoặc theo I/O đọc/ghi. - Nhấn
o: Chuyển đổi chỉ hiển thị các tiến trình đang thực hiện I/O. - Nhấn
p: Chuyển đổi hiển thị tiến trình hoặc luồng. - Nhấn
a: Chuyển đổi chế độ tích lũy (accumulated mode), hiển thị tổng I/O từ khi iotop khởi động. - Nhấn
i: Chuyển đổi hiển thị thống kê I/O cho mỗi tiến trình hoặc tổng cộng. - Nhấn
q: Thoátiotop.
Lưu ý

Df
Lệnh df (disk free) là công cụ nhanh nhất để có được cái nhìn tổng quan về tình trạng dung lượng ổ đĩa trên tất cả các phân vùng hoặc hệ thống file được đính kèm.
Cú pháp:
- Khi chạy lệnh
#dfmà không có tham số, kết quả sẽ được hiển thị mặc định theo đơn vị byte, gây khó khăn cho việc đọc hiểu. - Để có định dạng thân thiện hơn, bạn hãy sử dụng tùy chọn
-h(human-readable) để tự động chuyển đổi dung lượng sang các đơn vị lớn hơn như Kilobytes (K), Megabytes (M) hoặc Gigabytes (G).
#df -h- Để xem tổng dung lượng có sẵn trên tất cả các hệ thống file, bạn có thể thêm tùy chọn
--total:
#df -h --totalDu và Ncdu
Trong khi df cung cấp cái nhìn tổng quan, lệnh du (disk usage) lại đi sâu vào chi tiết, giúp phân tích dung lượng sử dụng của từng thư mục cụ thể.
Lệnh Du: Công cụ này sẽ tính toán và cung cấp kết quả về dung lượng của thư mục hiện tại và tất cả các thư mục con bên trong nó.
- Tương tự
df, sử dụng cú pháp#du -hđể có kết quả dễ đọc. - Nếu muốn xem kích thước của cả file và thư mục, bạn có thể thêm tùy chọn
-a.
Ứng dụng Ncdu: Ncdu (NCurses Disk Usage) là một phiên bản nâng cấp của du, sử dụng giao diện ncurses để hiển thị mức sử dụng đĩa trong một thư mục dưới dạng đồ thị tương tác. Điều này giúp người dùng dễ dàng điều hướng và xác định các thư mục hoặc file đang chiếm nhiều dung lượng nhất một cách trực quan.
Lsof
Lệnh lsof (list open files) được sử dụng để hiển thị danh sách tất cả các file đang được mở và các tiến trình đang mở chúng, bao gồm các file trên đĩa (disk files), các kết nối mạng (network sockets), đường ống (pipes), thiết bị (devices) và các tiến trình khác. Nhờ vậy, lsof trở thành một công cụ không thể thiếu để dễ dàng xác định file nào đang được sử dụng bởi tiến trình nào, đặc biệt hữu ích khi cần gỡ một phân vùng (unmount) mà hệ thống báo lỗi “device is busy”.
4. Lệnh giám sát mạng
netstat
Netstat (Network Statistics) được sử dụng để theo dõi các kết nối mạng ra vào, bảng định tuyến, và thống kê giao diện mạng. Đây là một công cụ kỳ hữu ích cho các quản trị viên hệ thống trong việc giám sát hiệu suất và khắc phục các sự cố liên quan đến mạng.
Cú pháp cơ bản:
netstat -tuln-t: Hiển thị các kết nối TCP.-u: Hiển thị các kết nối UDP.-l: Hiển thị các socket đang lắng nghe.-n: Hiển thị địa chỉ số thay vì tên máy chủ.

iftop
iftop là một công cụ giám sát mạng theo thời gian thực trên hệ điều hành Linux, chuyên dùng để theo dõi mức sử dụng băng thông của các giao diện mạng. Công cụ này giúp quản trị viên dễ dàng xem các kết nối đang hoạt động và lượng dữ liệu ra vào, từ đó phát hiện nhanh các kết nối tiêu tốn nhiều băng thông hoặc nghi vấn trên server.
Cú pháp cơ bản:
sudo iftopLưu ý

tcpdump
Khi cần phân tích sâu hơn, tcpdump là công cụ phân tích gói tin mạng mạnh mẽ nhất. Chức năng chính của tcpdump là bắt (capture) và lọc (filter) các gói tin TCP/IP đã nhận hoặc truyền đi trên một giao diện mạng cụ thể. Một trong những tính năng giá trị nhất của công cụ này là khả năng lưu các gói tin đã bắt được vào một file, cho phép các quản trị viên thực hiện phân tích ngoại tuyến một cách chi tiết sau này.
Cú pháp:
# tcpdump -i eth0Lệnh này sẽ bắt đầu lắng nghe và hiển thị tất cả các gói tin đi qua giao diện mạng eth0.
nethogs
nethogs giúp xác định chính xác tiến trình nào đang chiếm dụng băng thông mạng. Thay vì chỉ thống kê lưu lượng theo giao thức hay cổng, nethogs nhóm băng thông theo từng ID tiến trình, giúp quản trị viên nhanh chóng phát hiện ứng dụng nào đang sử dụng nhiều băng thông nhất theo thời gian thực.
Cài đặt (CentOS):
#yum install nethogs -yCác lệnh điều khiển trong khi chạy:
- M: Thay đổi đơn vị hiển thị giữa KB/s, KB, B, MB.
- R: Sắp xếp danh sách theo lưu lượng nhận (Received).
- S: Sắp xếp danh sách theo lưu lượng gửi (Sent).
- Q: Thoát khỏi chương trình.
iptraf-ng
iptraf-ng là một giải pháp giám sát lưu lượng mạng khác, sử dụng giao diện dòng lệnh dựa trên ncurses để cung cấp một trải nghiệm trực quan và có cấu trúc hơn. Sau khi cài đặt, công cụ này cho phép bạn xem chi tiết các địa chỉ IP mà hệ thống đang kết nối trên tất cả các giao diện mạng. iptraf-ng còn cung cấp các tùy chọn hữu ích như bật tra cứu DNS ngược (Reverse DNS lookups) để hiển thị tên miền thay vì địa chỉ IP, và hiển thị tên dịch vụ TCP/UDP (TCP/UDP service names) thay vì chỉ hiển thị số hiệu cổng.
Bạn chạy lệnh sau để tiến hành cài đặt:
#yum install iptraf-ng -y5. Lệnh giám sát và phân tích hiệu suất nâng cao
nmon
nmon (Nigel’s Performance Monitor) là một công cụ giám sát hiệu suất hệ thống toàn diện, cung cấp dữ liệu về CPU, bộ nhớ, đĩa, mạng, hệ thống file và tiến trình trong một giao diện duy nhất.
Cú pháp cơ bản:
nmonCác tùy chọn chính (trong giao diện nmon):
- Nhấn c: Hiển thị thống kê CPU.
- Nhấn m: Hiển thị thống kê bộ nhớ.
- Nhấn d: Hiển thị thống kê đĩa.
- Nhấn n: Hiển thị thống kê mạng.
- Nhấn t: Hiển thị danh sách tiến trình hàng đầu.
- h: Trợ giúp.

atop
atop là một công cụ giám sát hiệu suất tương tác đầy đủ tính năng, có khả năng ghi lại và phân tích hoạt động của hệ thống trong quá khứ. Lệnh này cung cấp thông tin chi tiết về tài nguyên hệ thống (CPU, bộ nhớ, đĩa, mạng) và các tiến trình đang sử dụng chúng.
Cú pháp cơ bản:
atopCác tùy chọn chính (trong giao diện atop):
- Hiển thị mức sử dụng tài nguyên theo tiến trình.
- Khả năng ghi lại dữ liệu trong một khoảng thời gian dài và xem lại sau này.
- g: Thông tin chung.
- m: Thông tin bộ nhớ (RAM, swap).
- d: Thông tin đĩa (disk).
- n: Thông tin mạng (network).
- p: Thông tin tiến trình (process).

Bảng tóm tắt các lệnh giám sát Linux
| Lệnh | Chức năng chính | Lĩnh vực giám sát |
top | Giám sát tiến trình và tài nguyên theo thời gian thực. | Tổng quan, CPU, RAM, tiến trình. |
htop | Giám sát tiến trình tương tác. | Tổng quan, CPU, RAM, tiến trình. |
free | Mức sử dụng bộ nhớ RAM và swap. | Bộ nhớ. |
vmstat | Thống kê bộ nhớ ảo, I/O đĩa, CPU. | Bộ nhớ, I/O đĩa, CPU. |
iostat | Thống kê I/O của thiết bị đĩa. | I/O đĩa. |
iotop | Giám sát I/O đĩa theo tiến trình. | I/O đĩa, tiến trình. |
Df | Kiểm tra dung lượng sử dụng và còn trống của ổ đĩa. | Ổ đĩa. |
Du và Ncdu | Thống kê và phân tích dung lượng thư mục/ổ đĩa. | Ổ đĩa. |
Lsof | Liệt kê các file đang mở bởi tiến trình. | File, tiến trình. |
netstat | Kết nối mạng, bảng định tuyến (cũ hơn). | Mạng. |
iftop | Giám sát lưu lượng mạng theo giao diện. | Mạng. |
tcpdump | Phân tích lưu lượng và gói tin mạng. | Mạng. |
nethogs | Giám sát lưu lượng mạng theo tiến trình. | Mạng, tiến trình. |
Iptraf-ng | Theo dõi trạng thái mạng, kết nối và lưu lượng. | Mạng. |
nmon | Công cụ giám sát toàn diện, giao diện đơn. | Toàn diện. |
atop | Giám sát hiệu suất nâng cao, có ghi lại lịch sử. | Toàn diện, tiến trình. |
Câu hỏi thường gặp
atop khác gì so với các công cụ giám sát tài nguyên như top hoặc htop?
atop có khả năng ghi log hoạt động hệ thống trong thời gian dài, hỗ trợ xem lại chi tiết lịch sử tài nguyên, thuận tiện cho phân tích sự cố. Ngoài ra, atop hiển thị đầy đủ thông tin CPU, RAM, disk, network, tiến trình trong một giao diện thống nhất hơn so với top/htop.
Làm thế nào để lựa chọn công cụ giám sát phù hợp với nhu cầu sử dụng?
Để chọn công cụ phù hợp, bạn cần xác định quy mô hệ thống, loại thông tin muốn giám sát (CPU, RAM, network, log…), yêu cầu realtime hoặc lịch sử, và mức độ tự động cảnh báo cần thiết. Ví dụ: htop phù hợp giám sát cá nhân, Zabbix hoặc Prometheus thích hợp triển khai doanh nghiệp.
Có những phương pháp tự động cảnh báo khi hệ thống gặp sự cố không?
Nhiều phần mềm như Nagios, Zabbix, Prometheus hoặc Grafana đều có tính năng cài đặt ngưỡng cảnh báo (alert threshold). Khi vượt ngưỡng, hệ thống sẽ tự động gửi email, SMS, hoặc push notification cho bạn.
Nên sử dụng công cụ dòng lệnh hay giao diện đồ họa để theo dõi hệ thống?
Công cụ dòng lệnh (CLI) thích hợp cho việc giám sát nhanh, tiết kiệm tài nguyên và dễ tự động hoá qua script. Giao diện đồ hoạ (web dashboard) phù hợp với hệ thống lớn, có nhiều lớp phân tích dữ liệu trực quan, thuận tiện cho quản trị tập trung.
Việc giám sát hệ thống có ảnh hưởng đến hiệu suất tổng thể không?
Nếu triển khai hợp lý, công cụ giám sát không gây ảnh hưởng đáng kể tới hiệu suất hệ thống. Tuy nhiên, giám sát quá mức với tần suất quét cao hoặc lưu trữ log lớn liên tục có thể chiếm dụng tài nguyên và ảnh hưởng đến vận hành.
Mỗi công cụ Linux monitor đều cung cấp những thông tin quan trọng về trạng thái hệ thống, do đó việc nắm vững các lệnh và công cụ giám sát trong Linux là một kỹ năng quan trọng để bạn quản lý hệ thống hiệu quả. Hy vọng rằng bạn đã nắm được những thông tin hữu ích về các lệnh này, nếu quan tâm thêm về chủ đề về Linux, mời bạn tham khảo các bài viết liên quan dưới đây:




