Linux
 Computer >> コンピューター >  >> システム >> Linux

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

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

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

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

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

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

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

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

タイムスタンプをディレクトリに適用する方法

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

作成時間はどうですか?

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

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

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

タイムスタンプ情報を取得する最も簡単な方法は、 lsを使用することです。 指図。デフォルトの長い形式では、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

代わりに、 -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と異なることを確認しています。最後に、 -cを使用します 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
タイムスタンプを更新する方法

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

touch tmp

デフォルトでは、mtimeとatimeが現在の時刻に設定されます。 -tで別の時間を設定できます フラグ:

touch -t 202103061200 tmp

-m を使用して、mtimeまたはatimeのみを設定することもできます。 および-a それぞれフラグ:

touch -t 202103061300 -m tmp

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

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

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

find . -amin 15

正確に15分前にアクセスされたファイルを検索しますが、次のようになります。

find . -mtime -2

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

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

最も一般的に参照されるファイルのタイムスタンプはmtimeです。これは、たとえば、ファイルリストに表示される日時です。ただし、他の2つのタイムスタンプも、それらが何を指しているのかを理解していれば便利です。特に、ctimeは変更を表すことを常に忘れないでください 作成ではなく、時間 時間。

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


  1. Linuxでのシェル初期化ファイルとユーザープロファイルについて

    Linuxはマルチユーザーのタイムシェアリングシステムであり、複数のユーザーがログインしてシステムを使用できることを意味します。また、システム管理者は、ソフトウェアのインストール/更新/削除、実行できるプログラム、表示/編集できるファイルなど、さまざまなユーザーがシステムを操作する方法のさまざまな側面を管理するタスクを持っています。 Linuxでは、システム全体(グローバル)とユーザー固有(個人)の構成を使用するという2つの主要な方法でユーザーの環境を作成または維持することもできます。通常、Linuxシステムを操作する基本的な方法はシェルであり、シェルは、ユーザーログインが成功した後の初期化

  2. chmod 777とは何ですか?Linuxでは何をしますか?

    この記事では、ユーザー、グループ、その他にすべての権利を与えるために使用されるLinuxコマンドであるchmod777について説明します。 Linuxの新規ユーザー、ウェブ開発者、またはシステム管理者は、次のように入力するように指示されている可能性があります。 chmod 777 / path / to / file / or / folder …ある時点でLinuxシェルに。 システムで(特にrootとして)コマンドを実行するときは常に、コマンドが何をしているのかを常に知っておく必要があります。では、 chmod 777 本当に? Linuxでの権限 ls –lコマンド 上