Linuxファイルのタイムスタンプについて:mtime、ctime、およびatime

Linuxファイルのタイムスタンプについて:mtime、ctime、およびatime

Linuxオペレーティングシステムは、システム上の各ファイルの3つのタイムスタンプを追跡します。これらのタイムスタンプを使用すると、ファイルが最後に更新されたのはいつかを検出できます。しかし、それらはすべてどういう意味ですか?そして、ファイルのこれらの時間をどのように見つけますか?ディレクトリに関しては違いはありますか?





atime、ctime、およびmtimeを理解すると、これらすべての質問に答えることができます。これらは、Unixファイルシステムが追跡する3つのタイムスタンプです。何がいつ変更されたかについての詳細を知る必要がある場合は、読み進めてください。





3つのUnixタイムスタンプとは何ですか?

各ファイルには、3つのタイムスタンプが関連付けられています。 Linuxはこれらをに保存します Unix時間形式 エポックからの秒数を測定します。 3つのタイムスタンプは、一般にatime、ctime、およびmtimeと呼ばれます。





NS mtime 最も一般的で、多くの場合最も便利です。それはの略です 変更された時間 。これは、ファイルの内容が最後にディスクに書き込まれた時刻です。

少し違うのは ctime の略です 時間を変更する 。このタイムスタンプは、所有権や権限などのメタデータの変更を追跡します。これには、少なくとも一般的な最新のLinuxOSではファイルの名前変更が含まれます。ただし、ファイルのコンテンツが変更されると更新されるため、常にmtimeと同じくらい最新です。



3番目のタイムスタンプは 時間 、誰かが最後にファイルにアクセスした時間を保存します。

Windows10でフラッシュドライブを開く方法

タイムスタンプがディレクトリにどのように適用されるか

Linuxディレクトリは、基本的に、そのディレクトリ内のファイルのリストです。したがって、ディレクトリ内にファイルを作成すると、そのディレクトリのmtimeが更新されます。を使用して、ディレクトリ内のファイルを一覧表示します。 ls たとえば、コマンドはアクセス時間を更新します。また、ファイルの場合と同様に、ディレクトリの権限または名前を変更すると、そのctimeが更新されます。





作成時間はどうですか?

Linuxが単に作成時間を追跡していないことを知って驚くかもしれません。あなたは最初に ctime 作成時間を表します。同様に、あなたはそれを見つけることができる非常に有用なものと考えるかもしれません。

多くのアプリケーションは、ファイルを毎回最初から作成して保存します。これにより、作成時間を使用すると誤解を招く可能性があります。





さまざまなタイムスタンプを表示する方法

タイムスタンプ情報を取得する最も簡単な方法は、 NS ls 指図 。デフォルトのlong形式では、mtimeの詳細が表示されます。

$ date
Sat Mar 6 16:57:01 GMT 2021
$ echo 'hello, world' > tmp
$ ls -l tmp.txt
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 16:57 tmp

代わりに、を使用してatimeを表示できます。 -u 国旗:

$ date
Sat Mar 6 16:59:33 GMT 2021
$ cat tmp
hello, world
$ ls -lu tmp
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 16:59 tmp
$ ls -l tmp
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 16:57 tmp

最後の行は、このファイルのmtimeがatimeと異なることを確認しています。最後に、 -NS ctimeを表示するフラグ:

$ date
Sat Mar 6 17:02:34 GMT 2021
$ mv tmp tmp2
$ ls -lc tmp2
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 17:02 tmp2
$ ls -l tmp2
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 16:57 tmp2
$ ls -lu tmp2
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 16:59 tmp2

今回は、3回すべてが明確で正しいことを確認します。つまり、ファイルを変更、アクセス、変更の順に変更しました。

lsの代わりに 指図。このコマンドは、ファイルのiノードからの低レベルの詳細を表示します。 3回とも一度にチェックしやすくなります。また、直感的でない問題を回避します -u 国旗。同じファイルの出力例を次に示します。

$ stat tmp2
File: `tmp2'
Size: 13 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 327688 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ ubuntu) Gid: ( 1000/ ubuntu)
Access: 2021-03-06 16:59:45.000000000 +0000
Modify: 2021-03-06 16:57:59.000000000 +0000
Change: 2021-03-06 17:02:43.000000000 +0000

タイムスタンプを更新する方法

NS 接する コマンドは、ファイルの変更時間とアクセス時間を変更します。これは、空のファイルを作成する便利な方法でもあります。これは、ファイルがまだ存在しない場合に実行されます。

古いグーグルクロームに戻る方法
touch tmp

デフォルトでは、mtimeとatimeを現在の時刻に設定します。あなたはで別の時間を設定することができます -NS 国旗:

touch -t 202103061200 tmp

mtimeまたはatimeのみを設定することもできます。 -NS-に それぞれフラグ:

touch -t 202103061300 -m tmp

atimeまたはmtimeを設定すると、ctimeは常に更新されることに注意してください。

タイムスタンプに基づいてファイルを検索する方法

NS 探す コマンドは、タイムスタンプに作用する別のツールです。 atime、ctime、またはmtimeに基づいてファイルをフィルタリングできます。例えば:

find . -amin 15

正確に15分前にアクセスされたファイルを検索します。

find . -mtime -2

過去2日以内に変更されたファイルが見つかります。

Linuxはすべてのファイルを3回追跡します

最も一般的に参照されるファイルのタイムスタンプはmtimeです。これは、たとえば、ファイルリストに表示される日時です。ただし、他の2つのタイムスタンプも、それらが何を指しているのかを理解していれば、役立つ可能性があります。特に、ctimeは 変化する 時間ではなく 創造 時間。

touchやstatなどのコマンドは、Linuxコマンドラインツールボックスの便利なメンバーです。これらのコマンドを使用すると、新しいファイルをすばやく作成できるため、Linuxワークフローが強化されます。

共有 共有 つぶやき Eメール Linuxコマンドリファレンスのチートシート

この簡単なチートシートは、Linuxコマンドラインターミナルにすぐに慣れるために役立ちます。

悪いハードドライブの兆候
次を読む 関連トピック
  • Linux
  • ファイル管理
  • Linuxディストリビューション
著者について ボビージャック(58の記事が公開されました)

ボビーは、20年のほとんどの間ソフトウェア開発者として働いた技術愛好家です。彼はゲームに情熱を注いでおり、Switch Player Magazineのレビュー編集者として働いており、オンラインパブリッシングとウェブ開発のあらゆる側面に没頭しています。

ボビージャックのその他の作品

ニュースレターを購読する

ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。

購読するにはここをクリックしてください