harumaki.net

インフラ屋の覚書や、ラーメン食べある記とか。

bash command GNU/Linux 備忘録 運用

[Linux]statコマンド

投稿日:2012年8月17日

Last Updated on 2023年5月4日 by かんりにん

ファイル、および当該ファイルのファイルシステムのステータスを表示する。
実際には、指定したファイルのinode情報を表示するコマンドの様子。

-参考にしたサイト
お世話になっております!
Linux and Unix stat command
Linux stat Command

statコマンドで確認できる情報

表示される情報は以下のとおり。

File: ファイル名
Size サイズ
Blocks ブロック
IO Block I/Oブロック
(パラメータなし) ファイルの種類
Device デバイス
Inode Iノード
Link 対象ファイルへのリンク数
Access ファイルパーミッション
Uid ユーザーID、オーナー名
Gid グループID、グループ名
Access 最終アクセス時刻
Modify 最終更新時刻(ファイルの中身の更新時刻)
Change 最終更新時刻(パーミッション、inodeなどの更新時刻)

※パーミッション、最終アクセス時刻のパラメータが両方とも”Access”になってるので、紛らわしい…

オプション別の動作

オプションなしで実行すると、パラメーターと値が表示されるが
そのほか、よく使われると思われるオプションを以下に記載。

-t 簡易フォーマットでの表示
-f ファイルシステム情報を表示
-L シンボリックリンク先のファイルを表示
-c 指定したフォーマットの情報のみを出力する。

つづけて、各オプションごとの実行例を記載。

1)オプションなし

デフォルトのファイル情報を表示。

– 実行例:ファイルのステータス表示
オプションを指定しない場合、全ステータスが表示される。

$ stat EXAMPLE.txt
File: `EXAMPLE.txt'
Size: 1894 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 1146909 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 500/admin) Gid: ( 500/admin)
Access: 2012-08-17 12:45:46.000000000 +0900
Modify: 2012-08-17 12:44:30.000000000 +0900
Change: 2012-08-17 12:44:30.000000000 +0900

2)オプション -t

簡易フォーマットでの表示

– 実行例:簡易フォーマットでの表示

$ stat -t EXAMPLE.txt
EXAMPLE.txt 1894 8 81b4 500 500 fd00 1146909 1 0 0 1345175146 1345175070 1345175070 4096

違い:・パラメータが表示されない
・表示するステータスの順序がデフォルトのフォーマットと異なる
・それぞれのタイムスタンプがUNIX時間で表示される。
正直、あまり使いやすい印象はなかったが、CSVへの出力用、といった感じだろうか?

3)オプション -f

ファイルシステム情報を表示

– 実行例

$ stat -f EXAMPLE.txt
File: "EXAMPLE.txt"
ID: 0 Namelen: 255 Type: ext2/ext3
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 2031470 Free: 1212315 Available: 1107458
Inodes: Total: 2097152 Free: 1972423

オプション ”stat -tf” とすると、簡易版としての表示も可能。

4)オプション -L

シンボリックリンク先のファイルを表示

statでシンボリックリンクを指定した場合、シンボリックリンクの情報が表示される。
リンク先の情報を得たい場合は、オプション-Lをつけると出力できる。

– 実行例1:オプションなしの場合

$ stat /usr/bin/zsoelim
File: `/usr/bin/zsoelim' -> `soelim'
Size: 6 Blocks: 8 IO Block: 4096 symbolic link
Device: fd00h/64768d Inode: 568957 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2012-08-17 13:23:13.000000000 +0900
Modify: 2012-05-17 04:21:21.000000000 +0900
Change: 2012-05-17 04:21:21.000000000 +0900

– 実行例2:オプションありの場合
リンク先の実ファイルの情報が出力される。

$ stat -L /usr/bin/zsoelim
File: `/usr/bin/zsoelim'
Size: 23932 Blocks: 48 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 574036 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2012-08-12 04:03:30.000000000 +0900
Modify: 2012-02-23 23:22:55.000000000 +0900
Change: 2012-05-18 04:07:08.000000000 +0900

5)オプション -c

指定したフォーマットの情報のみを出力する。
以下、フォーマットとコマンド入力例の抜粋

-%g Group ID of owner(オーナーのグループID)
— 実行例

$ stat -c%g EXAMPLE.txt
500

-%s Total size, in bytes(トータルサイズ)
— 実行例

$ stat -c%s EXAMPLE.txt
1894

-%x Time of last access(最終アクセス時刻)
— 実行例

$ stat -c%x EXAMPLE.txt
2012-08-17 12:45:46.000000000 +0900

-%y Time of last modification(最終更新時刻)
— 実行例

$ stat -c%y EXAMPLE.txt
2012-08-17 12:44:30.000000000 +0900

-%z Time of last change(最終変更時刻)
— 実行例

$ stat -c%x EXAMPLE.txt
2012-08-17 12:45:46.000000000 +0900

そのほか、指定可能なフォーマット/情報は多数あるので、そのほかの引数については”man stat”で確認のこと。

そのほか、イロイロ試して気づいたこと

以下、参考程度に。

1)各タイムスタンプの動作の違いを確認

1.Access

– 事前に最終Access時刻をチェック

$ stat -c%x EXAMPLE.txt
2012-08-17 12:45:46.000000000 +0900

-ファイルの内容を表示してみる

$ cat EXAMPLE.txt ←ファイルを表示

– 出力後、再度最終Access時刻をチェック

$ stat -c%x EXAMPLE.txt
2012-08-17 16:08:31.000000000 +0900 ←最終アクセス時刻が更新されている。

2.Modify

– 事前に最終Modify時刻をチェック

$ stat -c%y EXAMPLE.txt
2012-08-17 12:44:30.000000000 +0900

-ファイルを編集・更新してみる

$ vi EXAMPLE.txt ←ファイルを編集し、上書き保存。

– 更新後、再度最終Modify時刻をチェック

$ stat -c%y EXAMPLE.txt
2012-08-17 16:09:41.000000000 +0900 ←最終更新時刻が更新されている。

3.Change

– 事前に最終change時刻をチェック

$ stat -c%z EXAMPLE.txt
2012-08-17 15:48:19.000000000 +0900

-ファイルのパーミッションを変更してみる

$ chmod 755 EXAMPLE.txt ←ファイルの属性を変更し、上書き保存。

– 変更後、再度最終change時刻をチェック

$ stat -c%z EXAMPLE.txt
2012-08-17 15:49:23.000000000 +0900 ←最終更新時刻が更新されている。

2)パラメータLinkについて

Linkのカウント対象となるのはハードリンクのみとなる。
シンボリックリンクはLinkにカウントされず、ファイルの種類がsymbolic linkとなる。
このパラメータの値が2以上の場合は複数のハードリンクがあることになる。

-bash, command, GNU/Linux, 備忘録, 運用

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

no image

[メモ]rsyslog たくさんのNW機器のsyslogを振り分ける方法

客先にそこそこの数のルーター、スイッチ、APがあるので、syslogサーバーを立てて一括管理しておきたいのだけど、DBに放り込むほどではないのでrsyslogdでまかなうことに。 syslogファシリ …

[nagios]nrpe.cfgのパラメーター一覧

RPM版nrpeでインストールされるnrpe.cfgのパラメーター一覧と説明書き。デフォルトの設定値つき。 結構適当な解釈をしちゃってるかもなので、ご指摘、ツッコミお待ちしておりますw log_fac …

YAMAHAルーター設定tip

[pukiwiki] すべて製品に付属のマニュアルに載っているのでアレだけど、自分の備忘録用として。 **1)端末アクセス [#o642ebc3] 最近のノートPCにはシリアルケーブルが付属していない …

[AWS] EC2 HVMタイプを使う時のファイルシステム周りの作業2(swap追加)

  さしあたりAWSだから、t2インスタンスだから、というわけでは全くないけどメモ。 t2インスタンスは、もともとスワップ領域がないインスタンスタイプのため、スワップが必要な場合は、EBSを追加してm …

no image

[juniper] SRX220 syslog設定追加

  [pukiwiki] 今回はLAN内のsyslogサーバーにSRXのログを書き出す設定を。 SSG/screenosとは少々コマンド入力や動作が異なるので、備忘録として。 参考:SRX Getti …

Amazon プライム対象