Linux中的stat命令使用簡介

ls 命令可能是每一個 Unix 使用者第一個學習的命令之一, 但它僅僅顯示了 stat 命令能給出的信息的一小部分。
stat 命令從文件的索引節(jié)點獲取信息。 正如你可能已經(jīng)了解的那樣, 每一個系統(tǒng)里的文件都存有三組日期和時間, 它們包括最近修改時間(即使用 ls -l 命令時顯示的日期和時間), 最近狀態(tài)改變時間(包括對文件重命名)和最近訪問時間。
使用長列表模式查看文件信息, 你會看到類似下面的內容:
-rwx------ 1 shs unixdweebs 109 Nov 11 2013 trythis
使用 stat 命令, 你會看到下面這些:
File: `trythis'
Size: 109 Blocks: 8 IO Block: 262144 regular file
Device: 18h/24d Inode: 12731691 Links: 1
Access: (0700/-rwx------) Uid: ( 263/ shs) Gid: ( 100/ unixdweebs)
Access: 2014-09-09 19:27:58.000000000 -0400
Modify: 2013-11-11 08:40:10.000000000 -0500
Change: 2013-11-11 08:40:10.000000000 -0500
在上面的情形中, 文件的狀態(tài)改變和文件修改的日期/時間是相同的, 而訪問時間則是相當近的時間。 我們還可以看到文件使用了 8 個塊, 以及兩種格式顯示的文件權限 -- 八進制(0700)格式和 rwx 格式。 在第三行顯示的索引節(jié)點是 12731681. 文件沒有其它的硬鏈接(Links: 1)。 而且, 這個文件是一個常規(guī)文件。
把文件重命名, 你會看到狀態(tài)改變時間發(fā)生變化。
這里的 ctime 信息, 最早設計用來存儲文件的創(chuàng)建(create)日期和時間, 但后來不知道什么時候變?yōu)橛脕泶鎯顟B(tài)修改(change)時間。
$ stat trythat
File: `trythat'
Size: 109 Blocks: 8 IO Block: 262144 regular file
Device: 18h/24d Inode: 12731691 Links: 1
Access: (0700/-rwx------) Uid: ( 263/ shs) Gid: ( 100/ unixdweebs)
Access: 2014-09-09 19:27:58.000000000 -0400
Modify: 2013-11-11 08:40:10.000000000 -0500
Change: 2014-09-21 12:46:22.000000000 -0400
改變文件的權限也會改變 ctime 域。
你也可以配合通配符來使用 stat 命令以列出一組文件的狀態(tài):
File: `myfile'
Size: 20 Blocks: 8 IO Block: 262144 regular file
Device: 18h/24d Inode: 12731803 Links: 1
Access: (0640/-rw-r-----) Uid: ( 263/ shs) Gid: ( 100/ unixdweebs)
Access: 2014-08-23 03:00:36.000000000 -0400
Modify: 2014-08-22 12:02:12.000000000 -0400
Change: 2014-08-22 12:02:12.000000000 -0400
File: `myfile2'
Size: 20 Blocks: 8 IO Block: 262144 regular file
Device: 18h/24d Inode: 12731806 Links: 1
Access: (0640/-rw-r-----) Uid: ( 263/ shs) Gid: ( 100/ unixdweebs)
Access: 2014-08-23 03:00:36.000000000 -0400
Modify: 2014-08-22 12:03:30.000000000 -0400
Change: 2014-08-22 12:03:30.000000000 -0400
File: `myfile3'
Size: 40 Blocks: 8 IO Block: 262144 regular file
Device: 18h/24d Inode: 12730533 Links: 1
Access: (0640/-rw-r-----) Uid: ( 263/ shs) Gid: ( 100/ unixdweebs)
Access: 2014-08-23 03:00:36.000000000 -0400
Modify: 2014-08-22 12:03:59.000000000 -0400
Change: 2014-08-22 12:03:59.000000000 -0400
如果我們喜歡的話, 我們也可以通過其他命令來獲取這些信息。
向 ls -l 命令添加 "u" 選項, 你會看到下面的結果。 注意這個選項會顯示最后訪問時間, 而添加 "c" 選項則會顯示狀態(tài)改變時間(在本例中, 是我們重命名文件的時間)。
-rwx------ 1 shs unixdweebs 109 Sep 9 19:27 trythat
$ ls -lc trythat
-rwx------ 1 shs unixdweebs 109 Sep 21 12:46 trythat
stat 命令也可應用與文件夾。
在這個例子中, 我們可以看到有許多的鏈接。
File: `bin'
Size: 12288 Blocks: 24 IO Block: 262144 directory
Device: 18h/24d Inode: 15089714 Links: 9
Access: (0700/drwx------) Uid: ( 263/ shs) Gid: ( 100/ unixdweebs)
Access: 2014-09-21 03:00:45.000000000 -0400
Modify: 2014-09-15 17:54:41.000000000 -0400
Change: 2014-09-15 17:54:41.000000000 -0400
在這里, 我們還可以查看一個文件系統(tǒng)。
File: "/dev/cciss/c0d0p2"
ID: 0 Namelen: 255 Type: tmpfs
Block size: 4096Fundamental block size: 4096
Blocks: Total: 259366 Free: 259337 Available: 259337
Inodes: Total: 223834 Free: 223531
注意 Namelen (文件名長度)域, 如果文件名長于 255 個字符的話, 你會很幸運地在文件名處看到心形符號!
stat 命令還可以一次顯示所有我們想要的信息。 下面的例子中, 我們只想查看文件類型, 然后是硬連接數(shù)。
regular file
$ stat --format=%h trythat
1
在下面的例子中, 我們查看了文件權限 -- 分別以兩種可用的格式 -- 然后是文件的 SELinux 安全環(huán)境。最后,我們我們可以以從 Epoch 開始的秒數(shù)格式來查看文件訪問時間。
700
$ stat --format=%A trythat
-rwx------
$ stat --format=%C trythat
(null)
$ stat --format=%X bin
1411282845
下面全部是可用的選項:
%a 八進制表示的訪問權限
%A 可讀格式表示的訪問權限
%b 分配的塊數(shù)(參見 %B)
%B %b 參數(shù)顯示的每個塊的字節(jié)數(shù)
%d 十進制表示的設備號
%D 十六進制表示的設備號
%f 十六進制表示的 Raw 模式
%F 文件類型
%g 屬主的組 ID
%G 屬主的組名
%h 硬連接數(shù)
%i Inode 號
%n 文件名
%N 如果是符號鏈接,顯示器所鏈接的文件名
%o I/O 塊大小
%s 全部占用的字節(jié)大小
%t 十六進制的主設備號
%T 十六進制的副設備號
%u 屬主的用戶 ID
%U 屬主的用戶名
%x 最后訪問時間
%X 最后訪問時間,自 Epoch 開始的秒數(shù)
%y 最后修改時間
%Y 最后修改時間,自 Epoch 開始的秒數(shù)
%z 最后改變時間
%Z 最后改變時間,自 Epoch 開始的秒數(shù)
針對文件系統(tǒng)還有如下格式選項:
%a 普通用戶可用的塊數(shù)
%b 文件系統(tǒng)的全部數(shù)據(jù)塊數(shù)
%c 文件系統(tǒng)的全部文件節(jié)點數(shù)
%d 文件系統(tǒng)的可用文件節(jié)點數(shù)
%f 文件系統(tǒng)的可用節(jié)點數(shù)
%C SELinux 的安全上下文
%i 十六進制表示的文件系統(tǒng) ID
%l 文件名的最大長度
%n 文件系統(tǒng)的文件名
%s 塊大?。ㄓ糜诟斓膫鬏敚?br /> %S 基本塊大?。ㄓ糜趬K計數(shù))
%t 十六進制表示的文件系統(tǒng)類型
%T 可讀格式表示的文件系統(tǒng)類型
這些信息都可以得到,stat 命令也許可以幫你以稍微不同的角度來了解你的文件。
相關文章
Fedora Linux 42 穩(wěn)定版發(fā)布: 帶來大量新功能和軟件更新
Fedora 42昨日發(fā)布,這是 Red Hat 贊助開發(fā)的杰出前沿 Linux 發(fā)行版的最新版,包含大量新功能和軟件更新,使其成為 2025 年上半年發(fā)布的一款出色的 Linux 操作系統(tǒng)之一,內2025-04-16如何在Linux查看硬盤信息? 查看Linux硬盤大小類型和硬件信息的5種方法
使用Linux系統(tǒng)的過程中,查看和了解硬盤信息是非常重要的工作,尤其是對于系統(tǒng)管理員而言,那么在Linux系統(tǒng)中如何查看硬盤信息?以下是具體內容介紹2025-03-12如何在 Linux 中查看 CPU 詳細信息? 3招輕松查看CPU型號、核心數(shù)和溫度
在日常運維工作中,獲取 CPU 信息是系統(tǒng)運維管理員常見的工作內容,無論是為了性能調優(yōu)、硬件升級還是僅僅滿足好奇心2025-03-11什么是 Arch Linux? 獨樹一幟的Arch Linux發(fā)行版分析
Arch Linux是為簡化,優(yōu)化,現(xiàn)代化,實用主義,用戶中心和多功能性而創(chuàng)建Linux發(fā)行版,究竟是什么讓 Arch 與眾不同?下面我們就來簡要解讀2025-02-19如何在Linux環(huán)境下制作 Win11裝機U盤?
一直用的linux辦公,想要將筆記本電腦從 Linux 系統(tǒng)切換回 Windows 11,我們可以制作一個win11裝機u盤,詳細如下2025-02-17Rsnapshot怎么用? 基于Rsync的強大Linux備份工具使用指南
Rsnapshot 不僅可以備份本地文件,還能通過 SSH 備份遠程文件,接下來詳細介紹如何安裝、配置和使用 Rsnapshot,包括創(chuàng)建每小時、每天、每周和每月的本地備份,以及如何進2025-02-06Linux Kernel 6.13發(fā)布:附更新內容及新特性解讀
Linux 內核 6.13 正式發(fā)布,新版本引入了惰性搶占支持,簡化內核搶占邏輯,通過減少與調度器相關的調用次數(shù),讓內核在運行時表現(xiàn)更優(yōu),從而提高效率2025-01-23五大特性引領創(chuàng)新! 深度操作系統(tǒng) deepin 25 Preview預覽版發(fā)布
今日,深度操作系統(tǒng)正式推出deepin 25 Preview版本,該版本集成了五大核心特性:磐石系統(tǒng)、全新DDE、Treeland窗口合成器、AI For OS以及Distrobox子系統(tǒng)2025-01-18Linux Mint Xia 22.1重磅發(fā)布: 重要更新一覽
Beta 版 Linux Mint“Xia” 22.1 發(fā)布,新版本基于 Ubuntu 24.04,內核版本為 Linux 6.8,這次更新帶來了諸多優(yōu)化和改進,進一步鞏固了 Mint 在 Linux 桌面操作系統(tǒng)領域的2025-01-16LinuxMint怎么安裝? Linux Mint22下載安裝圖文教程
Linux Mint22發(fā)布以后,有很多新功能,很多朋友想要下載并安裝,該怎么操作呢?下面我們就來看看詳細安裝指南2025-01-16