contents
- ファイルのタイムスタンプ
- inodeとの関連性のあるctime ⇦今ここ
- 一番身近なタイムスタンプ!mtime
前回は、アクセス時間を表示するatimeについて検証をしていきました。
次はctimeになります。
ctimeは最終inode更新日時です。
inodeとはlinuxシステム上でファイルやディレクトリに与えらる一意の整数値で、ファイルのパーミッションや所有者ID、グループID、さらにファイルやディレクトリを特定するためのinode番号など様々なデータが格納されます。
inodeには割り当てるinode番号には限りがあり、割り当てられたパーティションのサイズやファイルシステムの種類によって最大値が変わります。
inodeが限界値を迎えると、ファイルやディレクトリの作成や更新ができなくなるといった障害が起きます。
さて、話が脱線しましたが、このinode内のデータが書き換わることで、最終inode更新日時、つまりctimeのタイムスタンプが更新されます。
では、atimeの時と同じように検証してみましょう。
ちなみにlsコマンドの-lc
オプションでctimeを確認することができます。
そして今回もうひとつコマンドを追加します。
inode番号を表示するオプションでlsコマンドの-i
を使います。
ls -i
で表示される番号が更新されているとctimeのタイムスタンプも更新されます。
前回と同じようにtouchコマンドを使ってファイルを作成。
ls -lciで作成されたファイルを確認します
touch ctime_test.txt
ls -lci ctime_test.txt
201790220 -rw-rw-r-- 1 sooota sooota 0 8月 23 21:49 ctime_test.txt
では次にlessコマンドでファイルを閲覧した時のタイムスタンプを見てみましょう。
ファイルのinodeに含まれる情報を更新した訳ではないので、タイムスタンプに変化はないというのが予想です。
ls -lci ctime_test.txt
201790220 -rw-rw-r-- 1 sooota sooota 0 8月 23 21:49 ctime_test.txt
date
2017年 8月 23日 水曜日 21:51:32 JST
less ctime_test.txt
ls -lci ctime_test.txt
201790220 -rw-rw-r-- 1 sooota sooota 0 8月 23 21:49 ctime_test.txt
予想通りatimeの時と違ってタイムスタンプは更新されていません。
次はviコマンドを使ってファイルの中に文字を入れます。
ls -lci ctime_test.txt
201790220 -rw-rw-r-- 1 sooota sooota 0 8月 23 21:49 ctime_test.txt
date
2017年 8月 23日 水曜日 21:53:36 JST
vi ctime_test.txt
ls -lci ctime_test.txt
201793810 -rw-rw-r-- 1 sooota sooota 13 8月 23 21:53 ctime_test.txt
今度は更新されました。
これはviの特性で、viでファイルを開くとswpファイルができます。
編集後の保存はこのswpファイルが正となってファイルが作成されるため、inode番号が変更になります。
そのため、ファイルは新しく作成されたものとなり、ctimeが更新されます。
最後にファイルのパーミッションを変えてみます。
ls -lci ctime_test.txt
201793810 -rw-rw-r-- 1 sooota sooota 13 8月 23 21:53 ctime_test.txt
date
2017年 8月 23日 水曜日 08:58:13 JST
chmod 755 ctime_test.txt
ls -lci ctime_test.txt
201793810 -rw-rw-r-- 1 sooota sooota 13 8月 23 21:58 ctime_test.txt
inode番号は変更されませんが、inodeの保持しているファイルのパーミッションが変更されたため、タイムスタンプが更新されました。
これで検証は終わりです。
他にもinodeの持っているデータを更新すると、タイムスタンプが更新されますので、興味があれば、試してみるとよいです。
次回は、一番身近なタイムスタンプ、mtimeについて検証をしていきます。
新着情報
ブログランキングに参加しています。クリックして応援していただけると嬉しいです。
人気ブログランキング
にほんブログ村