Cách sử dụng lệnh stat trên Linux

Một thiết bị đầu cuối Linux trên máy tính để bàn kiểu Ubuntu.

Fatmawati Achmad Zaenuri / Shutterstock.com



Hệ điều hành Linux stat lệnh hiển thị cho bạn chi tiết hơn nhiều so với ls làm. Hãy nhìn vào phía sau bức màn với tiện ích có thể cấu hình và thông tin này. Chúng tôi sẽ hướng dẫn bạn cách sử dụng nó.

stat đưa bạn đến hậu trường

ls lệnh rất tuyệt với những gì nó làm — và nó làm được rất nhiều thứ — nhưng với Linux, dường như luôn có cách để đi sâu hơn và xem những gì nằm bên dưới bề mặt. Và thông thường, nó không chỉ là trường hợp nâng mép thảm. Bạn có thể xé các tấm ván sàn và sau đó đào một cái hố. Bạn có thể bóc vỏ Linux như một củ hành tây.





10 lệnh Linux cơ bản cho người mới bắt đầu CÓ LIÊN QUAN 10 lệnh Linux cơ bản cho người mới bắt đầu

ls sẽ hiển thị cho bạn rất nhiều thông tin về tệp, chẳng hạn như quyền nào được thiết lập trên tệp và kích thước của tệp, và cho dù đó là một tệp hay một liên kết tượng trưng . Để hiển thị thông tin này ls đọc nó từ một cấu trúc hệ thống tệp được gọi là inode .

Mọi tệp và thư mục đều có inode. Inode giữ siêu dữ liệu về tệp , chẳng hạn như hệ thống tệp nào chặn nó chiếm và các dấu ngày tháng được liên kết với tệp. Inode giống như một thẻ thư viện cho tệp. Nhưng ls sẽ chỉ cho bạn thấy một số thông tin. Để xem mọi thứ, chúng ta cần sử dụng dấu stat yêu cầu.



Thích ls , dấu stat lệnh có rất nhiều tùy chọn. Điều này làm cho nó trở thành một ứng cử viên sáng giá cho việc sử dụng bí danh. Khi bạn đã phát hiện ra một tập hợp các tùy chọn cụ thể tạo nên stat cung cấp cho bạn đầu ra mà bạn muốn, bọc nó trong một bí danh hoặc hàm shell . Điều này làm cho việc sử dụng trở nên thuận tiện hơn nhiều và bạn không phải nhớ một loạt các tùy chọn dòng lệnh phức tạp.

CÓ LIÊN QUAN: Cách sử dụng lệnh ls để liệt kê tệp và thư mục trên Linux

So sánh nhanh

Hãy sử dụng ls để cung cấp cho chúng tôi một danh sách dài (tùy chọn -l) với kích thước tệp mà con người có thể đọc được (-h tùy chọn):



ana.c

Quảng cáo

Từ trái sang phải, thông tin mà ls cung cấp là:

  • Ký tự đầu tiên là dấu gạch ngang - và điều này cho chúng ta biết tệp là tệp thông thường chứ không phải là ổ cắm, liên kết biểu tượng hay một loại đối tượng khác.
  • Chủ sở hữu, nhóm và các quyền khác được liệt kê ở định dạng bát phân .
  • Số lượng liên kết cứng trỏ đến tệp này. Trong trường hợp này, và trong hầu hết các trường hợp, nó sẽ là một.
  • Chủ sở hữu tệp là dave.
  • Chủ nhóm thật tuyệt.
  • Kích thước tệp là 802 byte.
  • Tệp được sửa đổi lần cuối vào Thứ Sáu, ngày 13 tháng 12 năm 2015.
  • Tên tệp là stat.

Chúng ta hãy xem xét với stat :

stat

Thông tin chúng tôi nhận được từ stat Là:

    Tập tin: Tên của tập tin. Thông thường, nó giống với tên mà chúng ta đã chuyển cho rwx trên dòng lệnh, nhưng Có thể khác nếu chúng ta đang xem xét một liên kết tượng trưng. Kích cỡ: Kích thước của tệp tính bằng byte. Khối: Số lượng hệ thống tệp khối mà tệp yêu cầu, để được lưu trữ trên ổ cứng. Khối IO: Kích thước của khối hệ thống tệp. Loại tệp: Loại đối tượng mà siêu dữ liệu mô tả. Các loại phổ biến nhất là tệp và thư mục, nhưng chúng cũng có thể là liên kết, ổ cắm hoặc đường ống được đặt tên. Thiết bị: Số thiết bị trong hệ thập lục phân và số thập phân. Đây là ID của ổ cứng mà tệp được lưu trữ. Inode: Số inode. Đó là, số ID của inode này. Cùng với nhau, số inode và số thiết bị xác định duy nhất một tệp. Liên kết: Con số này cho biết có bao nhiêu liên kết cứng trỏ đến tệp này. Mỗi liên kết cứng có inode riêng của nó. Vì vậy, một cách khác để suy nghĩ về con số này là có bao nhiêu inodes trỏ đến một tệp này. Mỗi khi một liên kết cứng được tạo hoặc xóa, con số này sẽ được điều chỉnh tăng hoặc giảm. Khi nó đạt đến 0, bản thân tệp đã bị xóa và inode bị xóa. Nếu bạn sử dụng relatime trên một thư mục, số này đại diện cho số lượng tệp trong thư mục, bao gồm cả. mục nhập cho thư mục hiện tại và mục nhập .. cho thư mục mẹ. Truy cập: Các quyền đối với tệp được hiển thị ở dạng bát phân và truyền thống -0500 (đọc, ghi, thực thi các định dạng). Uid: ID người dùng và tên tài khoản của chủ sở hữu. Hướng dẫn: ID nhóm và tên tài khoản của chủ sở hữu. Truy cập: Dấu thời gian truy cập. Không đơn giản như nó có vẻ. Các bản phân phối Linux hiện đại sử dụng một lược đồ được gọi là chmod, cố gắng tối ưu hóa yêu cầu ghi ổ cứng để cập nhật thời gian truy cập . Nói một cách đơn giản, thời gian truy cập được cập nhật nếu nó cũ hơn thời gian sửa đổi. Biến đổi: Dấu thời gian sửa đổi. Đây là lúc tệp nội dung đã được sửa đổi lần cuối. (Thật may mắn, nội dung của tệp này đã được thay đổi lần cuối cách đây bốn năm cho đến ngày nay.) Biến đổi: Dấu thời gian thay đổi. Đây là lúc tệp thuộc tính hoặc là nội dung đã được thay đổi lần cuối. Nếu bạn sửa đổi tệp bằng cách đặt quyền mới cho tệp, dấu thời gian thay đổi sẽ được cập nhật (vì tệp thuộc tính đã thay đổi), nhưng dấu thời gian đã sửa đổi sẽ không được cập nhật (vì tệp nội dung không thay đổi). Sinh: Dành riêng để hiển thị ngày tạo ban đầu của tệp, nhưng điều này không được triển khai trong Linux.

Hiểu về Dấu thời gian

Dấu thời gian nhạy cảm với múi giờ. ana.c ở cuối mỗi dòng cho thấy rằng tệp này đã được tạo trên một máy tính trong Giờ phối hợp quốc tế (UTC) múi giờ trước 5 giờ so với múi giờ của máy tính hiện tại. Vì vậy, máy tính này chậm hơn 5 giờ so với máy tính đã tạo ra tệp này. Trên thực tế, tệp được tạo trên máy tính có múi giờ của Vương quốc Anh và chúng tôi đang xem tệp tại đây trên máy tính theo múi giờ chuẩn miền Đông Hoa Kỳ.

Việc sửa đổi và thay đổi dấu thời gian có thể gây nhầm lẫn bởi vì đối với những người chưa quen, tên của chúng nghe như thể chúng có cùng nghĩa.

Hãy sử dụng stat để sửa đổi các quyền đối với tệp có tên stat. Chúng tôi sẽ làm cho nó có thể được viết bởi tất cả mọi người. Điều này sẽ không ảnh hưởng đến nội dung của tệp, nhưng nó sẽ ảnh hưởng đến các thuộc tính của tệp.

stat

Và sau đó chúng tôi sẽ sử dụng stat để xem các dấu thời gian:

stat

Quảng cáo

Dấu thời gian thay đổi đã được cập nhật, nhưng dấu thời gian được sửa đổi thì không.

Các sửa đổi dấu thời gian sẽ chỉ được cập nhật nếu nội dung của tệp được thay đổi. Các biến đổi dấu thời gian được cập nhật cho cả thay đổi nội dung và thay đổi thuộc tính.

Sử dụng thống kê với nhiều tệp

Để có báo cáo thống kê trên nhiều tệp cùng một lúc, hãy chuyển tên tệp thành -f trên dòng lệnh:

stat

Để sử dụng stat trên một tập hợp các tệp, sử dụng đối sánh mẫu. Dấu chấm hỏi? đại diện cho bất kỳ ký tự đơn nào và dấu hoa thị * đại diện cho bất kỳ chuỗi ký tự nào. Chúng ta có thể nói stat để báo cáo về bất kỳ tệp nào được gọi là ana với phần mở rộng là một chữ cái, bằng lệnh sau:

stat

Sử dụng thống kê để báo cáo về hệ thống tệp

stat có thể báo cáo về trạng thái của hệ thống tệp, cũng như trạng thái của tệp. -L (hệ thống tập tin) tùy chọn cho biết code.c để báo cáo về hệ thống tệp có tệp đó. Lưu ý rằng chúng ta cũng có thể chuyển một thư mục như / sang ana.c thay vì tên tệp.

-L

Thông tin code.c cho chúng tôi là:

    Tập tin: Tên của tập tin. TÔI: ID hệ thống tệp trong ký hiệu thập lục phân. Namelen: Độ dài tối đa cho phép đối với tên tệp. Loại: Loại hệ thống tệp. Kích thước khối: Lượng dữ liệu cần yêu cầu đọc để có tốc độ truyền dữ liệu tối ưu. Kích thước khối cơ bản: Kích thước của mỗi khối hệ thống tệp.

Các khối:

    Tổng cộng: Tổng số tất cả các khối trong hệ thống tệp. Rảnh rỗi: Số khối miễn phí trong hệ thống tệp. Có sẵn: Số lượng khối miễn phí có sẵn cho người dùng thông thường (không phải root).

Inodes:

    Tổng cộng: Tổng số inode trong hệ thống tệp. Rảnh rỗi: Số inode miễn phí trong hệ thống tệp.

Các liên kết tượng trưng cho hội nghị

Nếu bạn sử dụng -> trên một tệp thực sự là một liên kết tượng trưng, ​​nó sẽ báo cáo về liên kết. Nếu bạn muốn ana.c để báo cáo về tệp mà liên kết trỏ đến, hãy sử dụng dấu -L (dereference) tùy chọn. Tệp code.c là một liên kết tượng trưng đến stat . Hãy nhìn vào nó mà không có dấu -t lựa chọn:

stat

Quảng cáo

Tên tệp hiển thị stat trỏ tới (stat) stat. Kích thước tệp chỉ là 11 byte. Không có khối nào dành để lưu trữ liên kết này. Loại tệp được liệt kê dưới dạng liên kết tượng trưng.

Rõ ràng, chúng tôi không xem xét tệp thực tế ở đây. Hãy làm điều đó một lần nữa và thêm dấu rwx lựa chọn:

--format

Điều này hiện đang hiển thị chi tiết tệp cho tệp được trỏ đến bởi liên kết tượng trưng. Nhưng lưu ý rằng tên tệp vẫn được cung cấp là --printf. Đây là tên của liên kết, không phải tệp đích. Điều này xảy ra vì đây là tên mà chúng ta đã chuyển cho --printf trên dòng lệnh.

Báo cáo Terse

(terse) tùy chọn gây ra để cung cấp một bản tóm tắt cô đọng:

stat

Không có manh mối nào được đưa ra. Để hiểu rõ điều này — cho đến khi bạn ghi nhớ chuỗi trường — bạn cần tham chiếu chéo kết quả đầu ra này thành %n đầy đủ | đầu ra.

Định dạng đầu ra tùy chỉnh

Cách tốt hơn để lấy tập dữ liệu khác từ %s là sử dụng một định dạng tùy chỉnh. Có một danh sách dài các mã thông báo được gọi là chuỗi định dạng. Mỗi cái này đại diện cho một phần tử dữ liệu. Chọn những cái bạn muốn đưa vào đầu ra và tạo một chuỗi định dạng. Khi chúng tôi gọi %F và chuyển chuỗi định dạng cho nó, đầu ra sẽ chỉ bao gồm các phần tử dữ liệu mà chúng tôi yêu cầu.

Quảng cáo

Có nhiều bộ trình tự định dạng khác nhau cho tệp và hệ thống tệp. Danh sách cho các tệp là:

    %đến: Quyền truy cập trong bát phân. %ĐẾN: Quyền truy cập ở dạng con người có thể đọc được ( ). % b: Số khối được cấp phát. % B: Kích thước tính bằng byte của mỗi khối. % d: Số thiết bị ở dạng thập phân. % D: Số thiết bị trong hệ thập lục phân. % f: Chế độ thô trong hex. % FLoại tệp. % g: ID nhóm của chủ sở hữu. % G: Tên nhóm của chủ sở hữu. % h: Số lượng liên kết cứng. %tôi: Số inode. % m: Điểm gắn kết. %n: Tên tệp. %N: Tên tệp được trích dẫn, với tên tệp được tham chiếu nếu nó là một liên kết tượng trưng. %hoặc là: Gợi ý kích thước truyền I / O tối ưu. %S: Tổng kích thước, tính bằng byte. % t: Loại thiết bị chính trong hex, cho các tệp đặc biệt của thiết bị ký tự / khối. % T: Loại thiết bị phụ trong hex, dành cho các tệp đặc biệt của thiết bị ký tự / khối. % u: ID người dùng của chủ sở hữu. % U: Tên người dùng của chủ sở hữu. %Trong: Thời gian ra đời của tệp, con người có thể đọc được hoặc một dấu gạch ngang - nếu không xác định. %TRONG: Thời gian ra đời của tệp, giây kể từ Kỷ nguyên; 0 nếu không xác định. % x: Thời điểm truy cập cuối cùng, con người có thể đọc được. % X: Thời gian truy cập cuối cùng, giây kể từ Kỷ nguyên. % Y: Thời điểm sửa đổi dữ liệu cuối cùng, con người có thể đọc được. % Y: Thời gian sửa đổi dữ liệu gần đây nhất, giây kể từ Kỷ nguyên. %với: Thời điểm thay đổi trạng thái cuối cùng, con người có thể đọc được. %VỚI: Thời gian thay đổi trạng thái cuối cùng, giây kể từ Kỷ nguyên.

Kỷ nguyên là Unix Epoch , diễn ra vào ngày 1970-01-01 00:00:00 +0000 (UTC).

Đối với hệ thống tệp, trình tự định dạng là:

    %đến: Số lượng khối miễn phí có sẵn cho người dùng thông thường (không phải root). % b: Tổng số khối dữ liệu trong hệ thống tệp. % C: Tổng số inodes trong hệ thống tệp. % d: Số inode miễn phí trong hệ thống tệp. % f: Số khối miễn phí trong hệ thống tệp. %tôi: ID hệ thống tệp trong hệ thập lục phân. % L: Độ dài tối đa của tên tệp. %n: Tên tệp. %S: Kích thước khối (kích thước viết tối ưu). %S: Kích thước của khối hệ thống tệp (đối với số khối). % t: Loại hệ thống tệp trong hệ thập lục phân. % T: loại hệ thống tệp ở dạng con người có thể đọc được.

Có hai tùy chọn chấp nhận các chuỗi trình tự định dạng. Đây là stat--printf. Sự khác biệt giữa chúng là stat thông dịch viên Trình tự thoát kiểu C chẳng hạn như newline code.c và tab ana.? và nó không tự động thêm ký tự dòng mới vào đầu ra của nó.

Hãy tạo một chuỗi định dạng và chuyển nó vào =. Các trình tự định dạng sẽ được sử dụng là --printf cho tên tệp, stat cho kích thước của tệp và

ls -lh ana.h
cho loại tệp. Chúng tôi sẽ thêm
stat ana.h
thoát chuỗi đến cuối chuỗi để đảm bảo mỗi tệp được xử lý trên một dòng mới. Chuỗi định dạng của chúng tôi trông như thế này:

chmod +w ana.c

Chúng tôi sẽ chuyển điều này cho

stat ana.c
bằng cách sử dụng
stat ana.h ana.o
lựa chọn. Chúng tôi sẽ hỏi
stat ana.?
để báo cáo trên tệp có tên
stat -f ana.c
và một tập hợp các tệp phù hợp với
stat code.c
. Đây là lệnh đầy đủ. Lưu ý dấu bằng
stat -L code.c
giữa
stat -t ana.c
và chuỗi định dạng:

'File %n is %s bytes, and is a %F
'

Báo cáo cho mỗi tệp được liệt kê trên một dòng mới, đó là những gì chúng tôi yêu cầu. Tên tệp, kích thước tệp và loại tệp được cung cấp cho chúng tôi.

Quảng cáo

Các định dạng tùy chỉnh cung cấp cho bạn quyền truy cập vào nhiều phần tử dữ liệu hơn những phần tử được bao gồm trong tiêu chuẩn

stat --printf='File %n is %s bytes, and is a %F
' code.c ana/ana.?
đầu ra.

Kiểm soát hạt mịn

Như bạn có thể thấy, có rất nhiều phạm vi để trích xuất các phần tử dữ liệu cụ thể mà bạn quan tâm. Bạn có thể cũng có thể hiểu lý do tại sao chúng tôi khuyên bạn nên sử dụng bí danh cho các câu thần chú dài hơn và phức tạp hơn.

Lệnh Linux
Các tập tin nhựa đường · pv · con mèo · tac · chmod · nắm chặt · khác biệt · quyến rũ · Với · Đàn ông · pushd · popd · fsck · đĩa thử nghiệm · seq · fd · pandoc · đĩa CD · $ PATH · awk · tham gia · jq · nếp gấp · uniq · Journalctl · đuôi · trạng thái · ls · fstab · Vứt ra · ít hơn · chgrp · băm nhỏ · vòng quay · nhìn · dây · loại · đổi tên · zip · giải nén · gắn kết · umount · Tải về · fdisk · mkfs · rm · rmdir · rsync · df · gpg · chúng tôi · nano · mkdir · từ · ln · · đổi · rclone · cắt nhỏ · srm
Quy trình bí danh · màn hình · đứng đầu · tốt đẹp · Lại đẹp · phát triển · đi lạc · hệ thống · tmux · chsh · Môn lịch sử · tại · lô hàng · rảnh rỗi · cái mà · dmesg · usermod · ps · chroot · xargs · tty · hồng hào · lsof · vmstat · hết giờ · Tường · Đúng · giết · ngủ · sudo · của anh · thời gian · groupadd · usermod · các nhóm · lshw · tắt · khởi động lại · dừng lại · tắt nguồn · passwd · lscpu · crontab · ngày · bg · fg
Kết nối mạng netstat · ping · đường theo dõi · ip · ss · ai là · fail2ban · bmon · bạn · ngón tay · nmap · ftp · Xoăn · wget · ai · tôi là ai · Trong · iptables · ssh-keygen · ufw

CÓ LIÊN QUAN: Máy tính xách tay Linux tốt nhất cho nhà phát triển và người đam mê

ĐỌC TIẾP Ảnh hồ sơ cho Dave McKay Dave McKay
Dave McKay lần đầu tiên sử dụng máy tính khi băng giấy đục lỗ đang thịnh hành, và anh ấy đã lập trình kể từ đó. Sau hơn 30 năm trong ngành CNTT, anh hiện là một nhà báo công nghệ toàn thời gian. Trong sự nghiệp của mình, anh ấy đã làm việc với tư cách là một lập trình viên tự do, quản lý nhóm phát triển phần mềm quốc tế, quản lý dự án dịch vụ CNTT và gần đây nhất là Nhân viên bảo vệ dữ liệu. Bài viết của anh đã được xuất bản bởi howtogeek.com, cloudavvyit.com, itenterpriser.com và opensource.com. Dave là một nhà truyền giáo Linux và người ủng hộ nguồn mở.
Đọc đầy đủ tiểu sử

Bài ViếT Thú Vị