Lệnh free trong Linux — Kiểm tra tài nguyên bộ nhớ

Bạn đã bao giờ cảm thấy lo lắng khi server bỗng dưng chậm chạp mà không hiểu lý do tại sao chưa nhỉ? Liệu có phải tài nguyên hệ thống đang cạn kiệt hay do một tiến trình nào đó đang "ngốn" sạch bộ nhớ của vps nhà mình đúng không? Để giải quyết nỗi lo này, bạn nhất định phải làm quen với lệnh free.

free là một công cụ mạnh mẽ giúp bạn kiểm tra trạng thái bộ nhớ RAM và bộ nhớ đệm (swap) của hệ thống một cách nhanh chóng. Vậy thực chất free là gì và làm thế nào để đọc các thông số này một cách chính xác nhất? Trong bài viết này, mình sẽ hướng dẫn bạn cách dùng free cũng như tìm hiểu chi tiết về lệnh free Linux để bạn có thể làm chủ việc kiểm soát tài nguyên. Với kinh nghiệm của một Senior System Admin, mình thường dùng lệnh này để chẩn đoán ngay lập tức tình trạng tràn RAM khi các dịch vụ trên server hoạt động bất thường. Chắc chắn bạn sẽ thấy nó vô cùng hữu ích đấy!

Cần chuẩn bị gì trước khi dùng lệnh free?

  • Quyền user: Lệnh có thể chạy dưới quyền user thường để xem thông tin cơ bản. Tuy nhiên, để xem đầy đủ chi tiết về bộ nhớ đệm (buffers) và cache chính xác nhất, nên sử dụng quyền sudo hoặc root.
  • Distro/OS hỗ trợ: Linux (bao gồm các bản phân phối như Ubuntu, Debian, CentOS, Fedora, RHEL...). Lệnh này không có sẵn mặc định trên macOS hoặc Windows.
  • Package dependencies: Lệnh thuộc gói procps. Trên các hệ thống tối giản, nếu chưa có, có thể cài đặt bằng lệnh:
    • Ubuntu/Debian: sudo apt update && sudo apt install procps
    • CentOS/RHEL: sudo yum install procps-ng
  • Version tối thiểu: Không yêu cầu phiên bản cụ thể, nhưng các phiên bản procps mới sẽ cung cấp định dạng hiển thị đơn vị (MiB, GiB) rõ ràng hơn.

Cú pháp lệnh free là gì?

Lệnh free hỗ trợ 1 dạng cú pháp chính trên các hệ thống Linux dựa trên kernel.

free [OPTIONS]

Các tùy chọn của lệnh free là gì?

Lệnh free cung cấp các tùy chọn cho phép bạn kiểm soát đơn vị hiển thị, định dạng output và tần suất cập nhật thông tin bộ nhớ.

Tùy chọn ngắn Tùy chọn dài Mô tả
-b --bytes free -b hiển thị dung lượng bộ nhớ theo đơn vị byte.
-k --kibi free -k hiển thị dung lượng bộ nhớ theo đơn vị kibibyte (1024 byte). Đây là đơn vị mặc định.
-m --mebi free -m hiển thị dung lượng bộ nhớ theo đơn vị mebibyte.
-g --gibi free -g hiển thị dung lượng bộ nhớ theo đơn vị gibibyte.
--tebi free --tebi hiển thị dung lượng bộ nhớ theo đơn vị tebibyte.
--pebi free --pebi hiển thị dung lượng bộ nhớ theo đơn vị pebibyte.
--kilo free --kilo hiển thị dung lượng bộ nhớ theo đơn vị kilobyte (1000 byte).
--mega free --mega hiển thị dung lượng bộ nhớ theo đơn vị megabyte.
--giga free --giga hiển thị dung lượng bộ nhớ theo đơn vị gigabyte.
--tera free --tera hiển thị dung lượng bộ nhớ theo đơn vị terabyte.
--peta free --peta hiển thị dung lượng bộ nhớ theo đơn vị petabyte.
-h --human free -h tự động chọn đơn vị phù hợp và hiển thị dung lượng ở dạng dễ đọc cho người dùng.
--si free --si sử dụng hệ số 1000 thay vì 1024 khi tính toán đơn vị hiển thị.
-l --lohi free -l hiển thị thêm thông tin chi tiết về vùng bộ nhớ thấp (low) và bộ nhớ cao (high).
-t --total free -t thêm dòng tổng cộng hiển thị tổng RAM và swap cộng lại.
-v --committed free -v hiển thị thêm dòng committed memory, cho thấy lượng bộ nhớ đã được cam kết cấp phát.
-s --seconds free -s cho phép bạn lặp lại việc hiển thị theo chu kỳ, với khoảng cách thời gian tính bằng giây được chỉ định.
-c --count free -c chỉ định số lần lặp lại hiển thị khi dùng kết hợp với tùy chọn -s.
-L --line free -L hiển thị output liên tục trên một dòng duy nhất, ghi đè lên kết quả trước đó.
-w --wide free -w mở rộng output bằng cách tách cột buffers và cache thành hai cột riêng biệt.
--version free --version hiển thị thông tin phiên bản của lệnh free đang được cài đặt trên hệ thống.
-h --help free --help hiển thị hướng dẫn sử dụng ngắn gọn và danh sách các tùy chọn có sẵn.

xem thêm: System Monitoring and Management

Cách sử dụng lệnh free để kiểm tra tài nguyên bộ nhớ RAM?

Dưới đây là các tình huống kiểm tra dung lượng RAM và Swap thường gặp trong quá trình quản trị hệ thống Linux.

free là gì? [Xem thông tin bộ nhớ cơ bản]

free
              total        used        free      shared  buff/cache   available
Mem:           7951244       123456       456789        1234       7371239       7700000
Swap:           2097148           0       2097148

Lệnh hiển thị tổng dung lượng RAM, lượng đã dùng, lượng còn trống và bộ nhớ đệm. Trong thực tế, đơn vị mặc định là Kilobytes nên khá khó đọc đối với người quản trị.

free -h là gì? [Xem bộ nhớ định dạng dễ đọc]

free -h
              total        used        free      shared  buff/cache   available
Mem:            7.6G        120M        6.2G        1.0M        1.3G        7.4G
Swap:           2.0G          0        2.0G

Tham số -h (human-readable) tự động chuyển đổi đơn vị sang GB, MB để dễ quan sát. Trên môi trường production, đây là lệnh được sử dụng phổ biến nhất để kiểm tra nhanh tình trạng tài nguyên.

free -m là gì? [Kiểm tra bộ nhớ theo đơn vị MB]

free -m
              total        used        free      shared  buff/cache   available
Mem:           7765         118          612           1           7052         7520
Swap:          2047           0         2047

Tham số -m ép buộc hiển thị kết quả dưới đơn vị Megabytes. Trường hợp này thường dùng khi viết các script automation cần giá trị số cụ thể để so sánh ngưỡng tài nguyên.

free -t là gì? [Xem tổng cộng cả RAM và Swap]

free -h -t
              total        used        free      shared  buff/cache   available
Mem:            7.6G        120M        6.2G        1.0M        1.3G        7.4G
Swap:           2.0G          0        2.0G
Total:           9.6G        120M        8.2G        1.0M        1.3G        7.4G

Tham số -t thêm một dòng "Total" ở cuối để tính tổng dung lượng của cả RAM vật lý và bộ nhớ Swap. Điều này cho phép bạn có cái nhìn tổng thể về toàn bộ tài nguyên bộ nhớ mà hệ thống có thể sử dụng.

Lệnh free gặp lỗi hoặc không hiển thị đúng thông số bộ nhớ?

Trong quá trình quản trị hệ thống, người dùng thường gặp các tình huống dữ liệu hiển thị không chính xác hoặc không thể truy xuất thông tin bộ nhớ.

Lỗi không thể thực thi lệnh do thiếu gói cài đặt

$ free
bash: free: command not found

Lỗi này xảy ra khi gói procps-ng chưa được cài đặt trên các bản phân phối Linux tối giản (minimal install) hoặc Docker container.

Thông số bộ nhớ trống (free) thấp bất thường

$ free -m
              total        used        free      shared  buff/cache   available
Mem:           7962        7500         150         500         312        412

Người dùng thường lầm tưởng hệ thống sắp hết bộ nhớ khi cột free có giá trị thấp, nhưng thực tế thông số quan trọng cần theo dõi là cột available.

Không thể xem chi tiết thông số bộ nhớ Swap

$ free
              total        used        free      shared  buff/cache   available
Mem:           15845        1200        14000         100         2845        14500
Swap:              0           0           0

Trường hợp này xảy ra khi phân vùng Swap không được cấu hình trên ổ đĩa hoặc file swap chưa được kích hoạt trong hệ thống.

Lỗi hiển thị đơn vị không đồng nhất gây khó đọc

$ free
              total        used        free      shared  buff/cache   available
Mem::      16384568    1245672    15000000     500000     2800000     15500000

Khi không sử dụng các tùy chọn định dạng, lệnh trả về giá trị tính bằng Kilobytes (KB), gây khó khăn cho việc ước lượng dung lượng thực tế trên các hệ thống có RAM lớn.

Quy trình giám sát hiệu năng bộ nhớ hệ thống với lệnh free?

Trong kịch bản tối ưu hóa máy chủ Database, lệnh free được sử dụng như một phần của quy trình kiểm tra tình trạng tài nguyên để ngăn ngừa lỗi Out of Memory (OOM).

Bước 1: Kiểm tra tổng quan dung lượng bộ nhớ hiện tại

free -h
              total        used        free      shared  buff/cache   available
Mem:           15Gi       4.2Gi       2.1Gi       1.2Gi        9.2Gi        10Gi
Swap:         2.0Gi       1.0Gi       1.0Gi

Lệnh này cho phép bạn quan sát dung lượng RAM và Swap dưới định dạng dễ đọc (GB, MB), giúp xác định nhanh mức độ tiêu thụ tài nguyên tổng thể.

Bước 2: Theo dõi biến động bộ nhớ theo thời gian thực

free -s 5
              total        used        free      shared  buff/cache   available
Mem:           15Gi       4.2Gi       2.1Gi       1.2Gi        9.2Gi        10Gi
swap:          2.0Gi       1.0Gi       1.0Gi
[Press Ctrl+C to stop]

Sử dụng tham số -s giúp bạn quan sát sự thay đổi của các thông số bộ nhớ sau mỗi 5 giây, hỗ trợ phát hiện các tiến trình đang gây rò rỉ bộ nhớ (memory leak).

Bước 3: Phân tích chi tiết dung lượng bộ nhớ đệm

free -m
              total        used        free      shared  buff/cache   available
Mem:           15872        4320        2150         1230        9402       10240
Swap:           2048        1024        1024

Lệnh cho phép bạn xem các chỉ số chính xác theo đơn vị Megabytes (MB), hỗ trợ việc ghi chép số liệu cụ thể khi lập báo cáo hiệu năng hệ thống.

Vì bạn chưa cung cấp tên lệnh cụ thể {COMMAND_NAME}, tôi sẽ viết mẫu phần "Lưu ý thực tế" cho lệnh **chown** (thay đổi quyền sở hữu) để bạn hình dung đúng chuẩn Technical Writer.

Việc sử dụng lệnh chown trên môi trường VPS thường phát sinh lỗi nếu thiếu quyền quản trị cao nhất. Người dùng thực hiện lệnh chown mà không có tiền tố sudo dẫn đến thông báo "Operation not permitted". Trong các trường hợp quản lý website trên VPS, việc áp dụng sai user sở hữu thư mục web sẽ khiến dịch vụ web như Nginx hoặc Apache không thể đọc file, dẫn đến lỗi 403 Forbidden. Khi cần thay đổi quyền sở hữu cho toàn bộ thư mục con, việc sử dụng chown -R là bắt buộc để đảm bảo tính đồng nhất. Ví dụ: sudo chown -www-data:www-data /var/www/html sẽ thiết lập đúng chủ sở hữu cho mã nguồn. Ngoài ra, việc thay đổi owner quá mức trên VPS có thể gây xung đột với các tiến trình chạy dưới quyền user đặc biệt như mysql hoặc postgresql.

Tư khóa cần viết: [chown, VPS, sudo, permissions]

Những câu hỏi thường gặp về lệnh free?

Dưới đây là các tình huống phổ biến mà người dùng thường gặp phải khi sử dụng lệnh để kiểm tra tài nguyên bộ nhớ trên hệ thống Linux.

Làm thế nào để xem dung lượng bộ nhớ theo đơn vị dễ đọc như MB hoặc GB?

Sử dụng tùy chọn -h (human-readable) để lệnh tự động chuyển đổi các đơn vị byte sang MiB, GiB giúp người dùng dễ quan sát.

free -h
              total        used        free      shared  buff/cache   available
Mem:           15Gi       2.4Gi       8.2Gi       1.2Gi       4.4Gi        12Gi
Swap:         2.0Gi          0B       2.0Gi

Sự khác biệt giữa cột free và cột available là gì?

Cột free hiển thị bộ nhớ thực sự chưa được sử dụng, trong khi cột available cho biết lượng bộ nhớ ước tính có thể cấp phát ngay lập tức cho các ứng dụng mới mà không gây ra tình trạng swap.

free -m
              total        used        free      shared  buff/cache   available
Mem:           16000        4000        2000         500        10000        11000

Làm thế nào để xem thông tin bộ nhớ theo từng giây?

Bạn có thể sử dụng tùy chọn -s để yêu cầu lệnh thực hiện kiểm tra định kỳ sau một khoảng thời gian nhất định.

free -s 5
              total        used        free      shared  buff/cache   available
Mem:           15Gi       2.4Gi       8.2Gi       1.2Gi       4.4Gi        12Gi
Swap:         2.0Gi          0B       2.0Gi
[-- Đợi 5 giây --]
              total        used        free      shared  buff/cache   available
Mem:           15Gi       2.5Gi       8.1Gi       1.2Gi       4.4Gi        11Gi

Làm cách nào để chỉ hiển thị thông tin về bộ nhớ vật lý (RAM) và bỏ qua Swap?

Sử dụng tùy chọn -m cho đơn vị Megabytes kết hợp với lệnh lọc để chỉ lấy thông tin RAM.

free -m | grep "Mem:"
              total        used        free      shared  buff/cache   available
Mem:           15800        3800        7900         450        4100       11500

Làm thế nào để xem thông tin bộ nhớ dưới dạng bảng thống kê nhanh?

Sử dụng tùy chọn -t để lệnh hiển thị thêm một dòng "Total" ở cuối bảng, tính tổng cộng cả RAM và Swap.

free -t
              total        used        free      shared  buff/cache   available
Mem:           15Gi       2.4Gi       8.2Gi       1.2Gi       4.4Gi        12Gi
Swap:         2.0Gi          0B       2.0Gi
Total:         17Gi       2.4Gi      10.2Gi       1.2Gi       4.4Gi        12Gi

Lệnh free là một công cụ mạnh mẽ giúp bạn theo dõi và quản lý trạng thái bộ nhớ RAM cũng như bộ nhớ Swap trên hệ thống Linux một cách nhanh chóng. Bạn có thể dễ dàng kiểm soát tài nguyên thông qua tham số -h để đọc các thông số dưới dạng dễ hiểu, hoặc dùng tham số -m để định lượng chính xác theo đơn vị MB khi cần phân tích sâu hơn, đúng không nhỉ? Việc nắm vững lệnh này chắc chắn sẽ giúp bạn tối ưu hóa hiệu suất hệ thống một cách vô cùng hiệu quả. Chúc bạn thành công!