stat 概述
`stat` 命令顯示的是檔案或目錄本身內容以外的元數據,而是檔案系統為管理該對象而存儲的數據。這提供了比 `ls -l` 更詳細的信息,例如檔案的創建時間、最後修改時間、訪問次數等,對於分析檔案的變更歷史或訪問模式非常有用。
stat 的主要角色
`stat` 命令主要用於以下目的:
主要應用領域
- **確認檔案屬性**:準確確認檔案的擁有權、權限、大小等。
- **時間戳分析**:通過檢查檔案的創建、最後修改、最後訪問時間等各種時間信息來追蹤檔案的變更歷史。
- **符號鏈接信息**:確認符號鏈接的目標路徑和鏈接本身的所有信息。
- **檔案系統調試**:通過磁碟空間使用量、區塊分配、inode 信息等來診斷檔案系統的問題。
理解 stat 輸出信息
`stat` 命令的輸出由多個項目組成。理解每個項目的含義非常重要。
主要輸出項目
- File: 目標檔案或目錄的名稱。
- Size: 檔案的大小(字節)。對於目錄,通常顯示為 4096 字節。
- Blocks: 檔案在磁碟上佔用的 512 字節區塊數。
- IO Block: 為檔案執行 I/O 操作時的有效區塊大小。
- Type: 檔案的類型。例如:常規檔案、目錄、符號鏈接等。
- Device: 檔案所在設備的 ID(major:minor)。
- Inode: 檔案系統內檔案的唯一標識符 inode 編號。硬鏈接共享相同的 inode。
- Links: 該檔案的硬鏈接數。
- Access: 檔案的權限(八進制和 rwx 格式)。
- Uid / Gid: 檔案的擁有者(用戶 ID)和群組(組 ID)及其名稱。
- Access / Modify / Change: `Access`:最後訪問時間 (atime),`Modify`:最後修改時間 (mtime),`Change`:最後變更時間 (ctime)。'Birth' 是創建時間 (crtime),並且可能不會在所有檔案系統中支持。
主要 stat 命令選項
`stat` 命令提供了一些有用的選項來指定輸出格式或更改處理符號鏈接的方式。
1. 基本輸出選項
2. 符號鏈接處理選項
3. 輸出格式指定選項
生成的命令:
請試著組合命令。
這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。
`stat` 執行命令。
請將上述選項組合在一起,與 AI 一同虛擬執行命令。
使用示例
通過 `stat` 命令的各種應用示例,學習如何確認和分析檔案/目錄的詳細屬性。
確認單一檔案的所有信息
stat config.ini
輸出 `config.ini` 檔案的大小、權限、擁有者、時間戳等所有詳細信息。
確認符號鏈接本身的信息
stat -P mylink.sh
當 `mylink.sh` 是指向 `actual_script.sh` 的符號鏈接時,輸出 `mylink.sh` 本身的信息。(鏈接檔案的大小、擁有者等)
確認符號鏈接所指向的原始檔案的信息
stat -L mylink.sh
當 `mylink.sh` 是指向 `actual_script.sh` 的符號鏈接時,輸出 `actual_script.sh` 檔案的信息。
以用戶自定義格式輸出特定信息
stat -c '%n %s %y' my_document.txt
僅輸出 `my_document.txt` 檔案的名稱、大小(字節)和最後修改時間(YYYY-MM-DD HH:MM:SS)。
確認檔案所屬檔案系統的信息
stat --file-system /var/log
確認 `/var/log` 目錄所在檔案系統的類型、區塊大小、掛載點等信息。
確認檔案的 UNIX 時間戳 (mtime)
stat -c '%Y' important_data.csv
在腳本中以 UNIX 時間戳(秒)獲取檔案的修改時間,便於計算等用途。