stat -fオプションの使い方を完全ガイド!初心者でもわかるファイルシステム情報の確認方法
生徒
「先生、Linuxでファイルの情報を見るstatコマンドってありますよね?-fオプションって何のために使うんですか?」
先生
「良い視点ですね。-fオプションは、ファイル自体ではなく、そのファイルが置かれているファイルシステムの情報を見るためのものです。」
生徒
「ファイルシステムって何ですか?それを見てどうするんですか?」
先生
「わかりました。ファイルシステムについても、ゆっくり説明しますね!」
1. statコマンドとは?
Linuxにおけるstat(ステート)コマンドは、ファイルやディレクトリの詳細情報を表示するためのコマンドです。通常は、そのファイル自身の「最終更新日時」「サイズ」「所有者」などを確認するために使用しますが、-fオプションを使うと、ファイルが存在するファイルシステムの情報を見ることができます。
2. ファイルシステムとは?
ファイルシステムとは、Linuxや他のOSでファイルを管理・保存する仕組みのことです。簡単に言えば、ファイルをどのように配置し、どのように記録するかを決める「ルール」です。例えば、USBメモリやHDDの中には「ext4」や「xfs」などのファイルシステムがあります。
ファイルがどんなファイルシステム上にあるかを知ることで、対応している機能や制限(ファイル名の長さ、最大サイズなど)を確認できるようになります。
3. stat -fオプションの基本的な使い方
-fオプションを使うと、ファイルやディレクトリが保存されているファイルシステムの統計情報を表示します。以下が基本的な使い方です。
stat -f index.html
File: "index.html"
ID: b1c2d3e4 Namelen: 255 Type: ext2/ext3
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 524288 Free: 512000 Available: 511000
Inodes: Total: 131072 Free: 130000
このように、ファイルシステムの種類(Type)、使用可能なブロック数(Available)、ブロックサイズ(Block size)などが表示されます。
4. stat -fで確認できる主な項目
それぞれの出力項目について初心者向けにやさしく説明します。
- Type: ファイルシステムの種類(例:ext4、xfsなど)。これによりファイル保存の特性が異なります。
- Block size: ファイルが保存されるときの単位サイズ。これは効率や容量に影響します。
- Available: 現在使える空き容量(ブロック数)。ディスク残量のようなものです。
- Inodes: Linuxでファイルを管理するための「住所」のような仕組みで、これが足りないと空き容量があっても新しいファイルが作れません。
5. stat -fとstat(通常使用)の違い
statだけで実行すると、以下のようにファイル自身の情報が表示されます。
stat index.html
File: index.html
Size: 2048 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 123456 Links: 1
Access: 2025-09-01 12:00:00.000000000 +0900
Modify: 2025-09-01 11:00:00.000000000 +0900
Change: 2025-09-01 11:30:00.000000000 +0900
このように、statは「ファイルそのものの属性」を見るのに対し、stat -fは「そのファイルが置かれている土台(ファイルシステム)」を見るという違いがあります。
6. stat -fとdfコマンドとの違い
Linuxでは、ディスクの空き容量を見るためにdfコマンドもよく使います。
df index.html
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 20971520 1048576 19922944 5% /
このように、dfは全体の使用量とマウントポイントなどを表示しますが、stat -fはより詳細な構造情報(inodes、ブロックサイズなど)を教えてくれます。どちらも補完的に使うと便利です。
7. stat -fと--format(-c)オプションの組み合わせ
statコマンドは--formatまたは-cオプションを使って出力の形式をカスタマイズできます。-fと組み合わせると、特定の情報だけを抜き出して見ることができます。
stat -f -c "%T" index.html
ext2/ext3
このように、%Tを指定することでファイルシステムの種類だけを表示することができます。スクリプトやログに使うときに便利です。
8. stat -fを使うタイミングと活用例
stat -fは、以下のような場面で役立ちます。
- ファイルがどのファイルシステムにあるか確認したいとき
- 空き容量が足りない原因を調べるとき(inodes不足など)
- スクリプトでファイルシステムごとの処理を分けたいとき
特に複数のHDDやSSD、USBメモリなどを使っている環境では、どこに保存されているかを意識することがトラブル防止につながります。
まとめ
ここまで、Linuxの「stat -f」コマンドについて詳しく解説してきました。普段、何気なくファイルを保存したり編集したりしていますが、その背後には「ファイルシステム」という巨大な管理システムが動いています。 statコマンドに「-f」というオプションを添えるだけで、ファイルそのもののステータスではなく、そのファイルが属している「土台」の状態を瞬時に把握できることがお分かりいただけたかと思います。
stat -fコマンドで学んだ重要ポイント
Linuxシステムを管理する上で、特に意識しておきたいポイントを改めて整理しておきましょう。
- ファイルシステム情報の可視化: ファイル名、ID、種類(Type)、ブロックサイズ、そしてiノード(Inodes)の状態を一画面で確認できます。
- ディスク容量不足の真実を知る: 「ディスク容量(Blocks)は空いているのに、なぜか新しいファイルが作れない」といったトラブルの際、iノード(Inodes)が枯渇していないかを確認する手段として非常に有効です。
- 環境の互換性チェック: 自分が今操作しているディレクトリが、高速な「xfs」なのか、汎用的な「ext4」なのか、あるいはネットワーク経由の「nfs」なのかを知ることで、パフォーマンスの予測やコマンドの挙動の理解が深まります。
実践的なコマンド操作の振り返り
実際にターミナルを叩いて情報を確認する際、一般ユーザーとルートユーザーでは見える景色が変わることもあります。特にシステム全体のファイルシステム構成を詳細に調査する場合は、ルート権限が必要になる場面も出てくるでしょう。
まずは、一般ユーザーとして現在のディレクトリが属するファイルシステムの種類を確認してみましょう。
stat -f .
File: "."
ID: 80200000000 Namelen: 255 Type: ext2/ext3
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 61022208 Free: 45892104 Available: 42774528
Inodes: Total: 15507456 Free: 15123456
次に、ルートユーザーとしてシステム全体の中でも重要なディレクトリ(例えば /proc など)の特殊なファイルシステムを確認する場合の例です。
stat -f /proc
File: "/proc"
ID: 0 Namelen: 255 Type: proc
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 0 Free: 0 Available: 0
Inodes: Total: 0 Free: 0
このように、ディレクトリによって「Type」が「proc」になったり「tmpfs」になったりと、Linuxが内部で使い分けている仕組みが手に取るようにわかります。 Linux初心者の方は、まずは「自分のホームディレクトリがどんなファイルシステムか?」を調べてみることから始めてみてください。それが、サーバー管理やインフラ構築への第一歩となります。
生徒
先生、ありがとうございました!stat -fのおかげで、ファイルそのものだけじゃなくて、その「入れ物」のルールまで見えるんですね。
さっき自分のパソコンで試してみたら、Type: ext2/ext3って出てきました。これは古いタイプなんですか?
先生
いい質問ですね!実は、現在のLinux(UbuntuやCentOSなど)で広く使われている「ext4」というファイルシステムも、statコマンドの出力では互換性のために「ext2/ext3」と表示されることが多いんですよ。
もし、もっと正確に名前だけを知りたいなら、さっき学習したフォーマット指定を使ってみましょう。
生徒
あ、-c "%T"を使うやつですね!やってみます!
stat -f -c "%T" .
ext2/ext3
やっぱり「ext2/ext3」でした。でも、先生が教えてくれた「iノード(Inodes)」っていうのがすごく気になります。 これって、住所の空きがなくなると、ハードディスクに余裕があってもファイルが保存できなくなるってことですよね?
先生
その通り!素晴らしい理解です。例えば、すごく小さなファイルを何百万個も作ってしまうと、容量(Blocks)は全然使っていないのに、iノードが使い果たされてエラーになることがあるんです。 これを「iノード枯渇」と呼びます。インフラエンジニアにとっては、真っ先に疑うべきポイントの一つなんですよ。
生徒
なるほど……。df -iコマンドでも見れるって聞きましたけど、stat -fなら特定のファイルが置かれている場所だけに絞ってサッと確認できるから便利ですね!
ファイルの中身を見るcatや、一覧を見るlsだけじゃなくて、この土台を意識するコマンドも使いこなせるようになりたいです。
先生
その意気ですよ。Linuxは、こうした小さなコマンドの組み合わせで大きなシステムを管理しています。
stat -fで表示される「Block size」の数字も、実はデータの読み書き速度に影響していたりします。
次は、実際に巨大なファイルを扱ったときに、このブロックサイズがどう関係してくるかについても一緒に勉強していきましょうか。
生徒
はい!もっともっと詳しくなりたいので、よろしくお願いします!まずは自分のUSBメモリを指して、ファイルシステムの種類がどう違うか調べてみますね。