Linuxファイルにおけるファイルの時刻管理(atime,ctime,mtime)

この記事には広告を含む場合があります。

記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

Linuxのファイルにおけるタイムスタンプ

Linuxのファイルには、atime/ctime/mtime の3つのタイムスタンプがあります。

Windowsのファイルにおけるタイムスタンプである作成日時、更新日時、アクセス日時とは少し異なることもあり、意味合いを忘れることがあるため、備忘録としてまとめます。

 

タイムスタンプの概要

タイムスタンプ(atime,ctime,mtime)を一覧しましたので確認してみましょう。
ctime と mtime が似通った意味合いを持っています。

コマンド 正式名称 概要
atime Access Time 最後にファイルにアクセスした日時。
ctime Change Time 最後にファイルに変更を行った日時。
ファイルへの書き込みを行ったときに修正されます。
なお ctime には任意の日時を設定することはできません。
mtime Modify Time 最後にファイルに修正を行った日時。
ファイルへの書き込みやinodeなどの
パラメーターの情報を変更したときに修正されます。

 

タイムスタンプの変更の実例

では実際にタイムスタンプの変更を試してみましたので確認してみます。

ファイルの3つのタイムスタンプを確認したいときは、statコマンドを利用すると確認できます。

[root@localhost]$ stat sample.txt
  File: `sample.txt'
  Size: 1772            Blocks: 8          IO Block: 4096   通常ファイル
Device: fd03h/64771d    Inode: 504417      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-05-29 11:12:07.588240060 +0900
Modify: 2018-05-29 11:11:27.329240132 +0900
Change: 2018-05-29 11:11:27.329240132 +0900
 Birth: -

 

catコマンドでファイルにアクセスするとatimeが変更したのが分かります。

[root@localhost]$ cat sample.txt
[root@localhost]$ stat sample.txt
  File: `sample.txt'
  Size: 1772            Blocks: 8          IO Block: 4096   通常ファイル
Device: fd03h/64771d    Inode: 504417      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-10-22 19:31:45.416167292 +0900
Modify: 2018-05-29 11:11:27.329240132 +0900
Change: 2018-05-29 11:11:27.329240132 +0900
 Birth: -

 

viコマンドにて書き込みだけ行いました。

[root@localhost]$ vi sample.txt
[root@localhost]$ stat sample.txt
  File: `sample.txt'
  Size: 1772            Blocks: 8          IO Block: 4096   通常ファイル
Device: fd03h/64771d    Inode: 504417      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-10-22 19:31:45.416167292 +0900
Modify: 2018-10-22 19:33:19.279211051 +0900
Change: 2018-10-22 19:33:19.279211051 +0900
 Birth: -

なお touch コマンドでファイルにアクセスすると atime と mtime が更新されます。

 

タイムスタンプの用途

atime、ctime、mtimeを利用する用途として、よく見るのがfindコマンドによるファイルの検索です。

2日前以上前にアクセスされたファイルを探す

find ./ -atime +2

3日以内に書き込みされたファイルを探す

find ./ -ctime -3

4日前に修正されたファイルを探す

find ./ mtime 4

 

実例として、別記事を上げていますので、興味があればコチラもご確認ください。

n日以上古いログファイルを削除する
https://www.t3a.jp/blog/infrastructure/old-log-delete/

 

さいごに

タイムスタンプの種類を気にすることは多くありません。

ただ細やかな状況で対応を行いたいときには大変重宝します。必要になった際に、atime や ctime の意味合いだけでも思い返した上で、本記事が参考になれば幸いです。