stat command in linux

Khám phá sức mạnh tiềm ẩn của lệnh stat trong Linux

Bạn có bao giờ tò mò muốn biết tường tận về một tập tin hoặc thư mục trong hệ thống Linux của mình? Ngoài những thông tin cơ bản như tên, kích thước, thì còn rất nhiều dữ liệu ẩn sâu bên trong đang chờ bạn khám phá. Đó là lúc lệnh stat thể hiện sức mạnh của mình, cung cấp một cái nhìn toàn diện và chi tiết về bất kỳ đối tượng nào trong hệ thống tập tin.

Trong bài viết này, chúng ta sẽ cùng nhau tìm hiểu về lệnh stat, từ cú pháp cơ bản đến những tùy chọn nâng cao, và cách áp dụng nó vào các tình huống thực tế để quản lý hệ thống Linux hiệu quả hơn. Hãy cùng bắt đầu hành trình khám phá sức mạnh tiềm ẩn của stat nhé!

stat là gì và tại sao bạn nên sử dụng nó?

Lệnh stat (viết tắt của "status") là một công cụ dòng lệnh trong Linux được sử dụng để hiển thị thông tin trạng thái chi tiết về một tập tin hoặc thư mục. Thông tin này bao gồm kích thước, quyền truy cập, thời gian chỉnh sửa, inode, và nhiều thuộc tính khác. stat cung cấp một cách nhanh chóng và dễ dàng để có được cái nhìn sâu sắc về các đối tượng trong hệ thống tập tin.

Vậy tại sao bạn nên sử dụng stat? Dưới đây là một vài lý do:

  • Khắc phục sự cố: Khi gặp vấn đề với một tập tin hoặc thư mục, stat có thể giúp bạn xác định nguyên nhân bằng cách cung cấp thông tin về quyền truy cập, thời gian chỉnh sửa, và các thuộc tính khác.
  • Kiểm tra tính toàn vẹn: Bạn có thể sử dụng stat để so sánh thông tin của một tập tin với bản sao lưu, đảm bảo rằng nó không bị thay đổi hoặc bị hỏng.
  • Tự động hóa tác vụ: stat có thể được sử dụng trong các script để tự động hóa các tác vụ quản lý tập tin, chẳng hạn như sao lưu, di chuyển, hoặc kiểm tra tính hợp lệ.
  • Hiểu rõ hơn về hệ thống: Sử dụng stat giúp bạn hiểu rõ hơn về cách hệ thống tập tin hoạt động và cách các tập tin được quản lý.

Cú pháp cơ bản của lệnh stat

Cú pháp cơ bản của lệnh stat rất đơn giản:

stat [tùy_chọn] tên_tập_tin

Trong đó:

  • tùy_chọn: Các tùy chọn để điều chỉnh đầu ra của lệnh stat.
  • tên_tập_tin: Tên của tập tin hoặc thư mục mà bạn muốn xem thông tin.

Ví dụ, để xem thông tin về tập tin example.txt, bạn có thể sử dụng lệnh sau:

stat example.txt

Kết quả sẽ hiển thị một loạt các thông tin về tập tin, bao gồm:

  • File: Tên tập tin.
  • Size: Kích thước tập tin (bytes).
  • Blocks: Số lượng block được sử dụng.
  • IO Block: Kích thước block I/O.
  • Device: Thiết bị chứa tập tin.
  • Inode: Số inode của tập tin.
  • Links: Số lượng liên kết cứng đến tập tin.
  • Access: Quyền truy cập của tập tin (ví dụ: (0644/-rw-r--r--)).
  • Uid: User ID của chủ sở hữu.
  • Gid: Group ID của chủ sở hữu.
  • Access: Thời gian truy cập cuối cùng.
  • Modify: Thời gian chỉnh sửa cuối cùng.
  • Change: Thời gian thay đổi trạng thái cuối cùng.
  • Birth: Thời gian tạo tập tin (nếu hệ thống hỗ trợ).

Các tùy chọn hữu ích của lệnh stat

Lệnh stat cung cấp nhiều tùy chọn để bạn có thể tùy chỉnh đầu ra theo nhu cầu của mình. Dưới đây là một vài tùy chọn hữu ích:

  • -c FORMAT: Sử dụng định dạng được chỉ định để xuất thông tin. Đây là tùy chọn mạnh mẽ nhất, cho phép bạn tùy chỉnh hoàn toàn đầu ra của stat.
  • -f: Hiển thị thông tin về hệ thống tập tin chứa tập tin được chỉ định.
  • -L: Theo dõi liên kết tượng trưng. Nếu tên_tập_tin là một liên kết tượng trưng, stat sẽ hiển thị thông tin về tập tin mà liên kết trỏ đến, thay vì chính liên kết.
  • -t: Hiển thị thông tin ở định dạng ngắn gọn, dễ đọc.

Ví dụ về tùy chọn -c FORMAT:

Để chỉ hiển thị tên và kích thước của tập tin, bạn có thể sử dụng lệnh sau:

stat -c "Tên: %n  Kích thước: %s" example.txt

Trong đó:

  • %n: Đại diện cho tên tập tin.
  • %s: Đại diện cho kích thước tập tin.

Bạn có thể tìm thấy danh sách đầy đủ các định dạng (format specifiers) trong trang man của stat bằng cách sử dụng lệnh man stat. Ví dụ:

man stat

Các tình huống thực tế sử dụng lệnh stat

Để giúp bạn hiểu rõ hơn về cách sử dụng stat trong thực tế, chúng ta hãy xem xét một vài tình huống cụ thể:

  1. Kiểm tra quyền truy cập của một tập tin:

    Bạn muốn kiểm tra xem một tập tin có quyền thực thi hay không. Bạn có thể sử dụng lệnh stat để xem thông tin về quyền truy cập của tập tin:

    stat example.sh | grep Access:

    Nếu kết quả hiển thị -rwxr-xr-x, điều đó có nghĩa là tập tin có quyền thực thi cho chủ sở hữu, nhóm và những người dùng khác.

  2. Tìm các tập tin đã được chỉnh sửa gần đây:

    Bạn muốn tìm các tập tin đã được chỉnh sửa trong vòng 24 giờ qua. Bạn có thể kết hợp stat với các lệnh khác như find và awk để thực hiện việc này:

    find . -type f -print0 | xargs -0 stat -c "%n %Y" | awk '$2 > systime() - 86400 {print $1}'

    Lệnh này sẽ tìm tất cả các tập tin trong thư mục hiện tại và các thư mục con, sau đó sử dụng stat để lấy thời gian chỉnh sửa cuối cùng (tính bằng giây từ epoch) và sử dụng awk để lọc ra các tập tin đã được chỉnh sửa trong vòng 24 giờ qua.

  3. Xác định loại hệ thống tập tin:

    Bạn muốn biết một tập tin nằm trên loại hệ thống tập tin nào (ví dụ: ext4, XFS, NTFS). Bạn có thể sử dụng tùy chọn -f của stat:

    stat -f .

Bảng so sánh các thông tin quan trọng từ lệnh stat

Thông tin Mô tả Ý nghĩa
File Tên của tập tin hoặc thư mục Xác định đối tượng đang được kiểm tra
Size Kích thước của tập tin (bytes) Đánh giá dung lượng lưu trữ cần thiết
Blocks Số lượng block được sử dụng Liên quan đến hiệu quả sử dụng không gian đĩa
Access Quyền truy cập của tập tin Kiểm soát ai có thể đọc, ghi hoặc thực thi
Uid User ID của chủ sở hữu Xác định người sở hữu tập tin
Gid Group ID của chủ sở hữu Xác định nhóm sở hữu tập tin
Access (thời gian) Thời gian truy cập cuối cùng Cho biết lần cuối tập tin được đọc
Modify (thời gian) Thời gian chỉnh sửa cuối cùng Cho biết lần cuối nội dung tập tin được thay đổi
Change (thời gian) Thời gian thay đổi trạng thái cuối cùng Cho biết lần cuối các thuộc tính của tập tin (quyền, chủ sở hữu, v.v.) được thay đổi
Inode Số inode của tập tin Định danh duy nhất cho tập tin trong hệ thống tập tin

Câu hỏi thường gặp (FAQ) về lệnh stat

  1. Làm thế nào để hiển thị thông tin stat của tất cả các tập tin trong một thư mục?

    Bạn có thể sử dụng kết hợp lệnh find và stat:

    find . -type f -exec stat {} \;

    Lệnh này sẽ tìm tất cả các tập tin trong thư mục hiện tại và các thư mục con, sau đó thực thi lệnh stat cho mỗi tập tin.

  2. Sự khác biệt giữa thời gian Access, Modify và Change là gì?
    • Access (atime): Thời gian truy cập cuối cùng. Được cập nhật khi tập tin được đọc.
    • Modify (mtime): Thời gian chỉnh sửa cuối cùng. Được cập nhật khi nội dung của tập tin được thay đổi.
    • Change (ctime): Thời gian thay đổi trạng thái cuối cùng. Được cập nhật khi các thuộc tính của tập tin (quyền, chủ sở hữu, v.v.) được thay đổi.
  3. Làm thế nào để thay đổi định dạng thời gian hiển thị của stat?

    Bạn không thể trực tiếp thay đổi định dạng thời gian hiển thị của stat. Tuy nhiên, bạn có thể sử dụng các công cụ khác như date để định dạng lại thời gian sau khi lấy nó từ stat bằng tùy chọn -c.

Kết luận

Lệnh stat là một công cụ mạnh mẽ và linh hoạt trong Linux, cho phép bạn khám phá sâu hơn về các tập tin và thư mục trong hệ thống. Bằng cách nắm vững cú pháp và các tùy chọn của stat, bạn có thể sử dụng nó để khắc phục sự cố, kiểm tra tính toàn vẹn, tự động hóa tác vụ và hiểu rõ hơn về cách hệ thống tập tin hoạt động. Hy vọng bài viết này đã cung cấp cho bạn những kiến thức cần thiết để bắt đầu sử dụng stat một cách hiệu quả.

Hãy thử nghiệm với các ví dụ và tùy chỉnh lệnh stat để phù hợp với nhu cầu cụ thể của bạn. Chúc bạn thành công!

Last Updated : 21/08/2025