エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


Linuxのタイムスタンプはmtime、ctime、atimeの3種類。touchコマンドで更新する方法

      2019/02/24

Linuxのタイムスタンプはmtime、ctime、atimeの3種類ある

 

Linuxのタイムスタンプのmtime、ctime、atimeの違い

 
Linuxのファイルのタイムスタンプには 3種類あります。
 

  • mtime:最終変更日時
  • ctime:inodeの変更日時
  • atime:最終アクセス日時

 
もう少し詳しく説明します。
 

mtime:最終変更日時

 
「mtime」は一番分かりやすく、一番良く使う、ファイルの内容を書き換えた日時です。
 
「ls -l」で表示させることができます。
 
viコマンドなどでファイルを内容を更新した場合に「mtime」も更新されます。
ですが、less、view、更新しない場合の vi、chmod、chownなど、ファイルの内容を更新しないコマンドでは更新されません。
 
ちなみに、viでファイルの内容を更新したときは、「mtime」だけでなく、「ctime」「atime」も更新されます。
 
 

ctime:inodeの変更日時

 
「ctime」は、inodeが更新された日時です。
inodeは、ファイルやフォルダに与えられる一意の整数値で、パーミッションや所有者の ID、グループIDなどファイルを管理するための情報と関連付けられている値です。
この inodeに関連付けられている情報が更新された日時が「ctime」となります。
 
「ls -lci」で表示させることができます。
 
inodeに関しては、下記のサイトなどを参考にしてください。
https://wa3.i-3-i.info/word14802.html
 
chmod、chownコマンドなどでファイルの属性情報などが更新されると「ctime」も更新されます。
対して、less、vi、viewなどファイルの中身を表示するだけであれば更新されません。(viコマンドでファイルの内容を更新した場合は「ctime」も更新されます。)
 
 

atime:最終アクセス日時

 
「atime」は、最も頻繁に更新されるタイムスタンプで、ファイルに対してなにかの操作を行うと更新された日時です。
 
「ls -lu」で表示させることができます。
 
ファイルに対して、less、viコマンドなどを実行すると更新されます。(viコマンドでは保存していなくても開くだけで更新されます。)
ですが、view、chmod、chownコマンドなどでは更新されません。
 
 

touchコマンドの -d、-m、-aオプションの違い

 
touchコマンドは、0バイトのファイルを作成したり、ファイルやフォルダの更新日時を変更したりするときに使用します。
 
ですが、ファイルの更新日を変更するオプションとして、-d、-m、-aがあります。
それぞれのオプションは、先に解説した、mtime、ctime、atimeと対になっていますので、オプションの内容を理解するには、それぞれのタイムスタンプの意味するところを理解する必要があります。
 
 

touch -d では mtime、ctime、atimeすべてを更新する

 
touchコマンドでファイルの日時を更新する際、一番良く使うであろうオプションは「-d」だと思います。
 

 
これは、ファイルの中身が更新されたときと同じ状況にするオプションです(viコマンドで中身を表示し、何も変更せずに保存して閉じる作業をした状態と同じです)。
そのため、mtime、ctime、atimeのすべてが更新されます。
 
 
また、上記のように「-d」オプションに続いて日時を指定することで、指定した日時に変更することができます。
 
日時の指定は、「2019/01/01 01:00:00 am」「Tue Jan 1 12:00:00 JST 2019」のように、一般的に使う表記方法であればだいたい使えます。
 
 

 
上記のように、日時を指定しない場合は、コマンドを実行した日時に変更されます。
 
 

 
さらに、「-d」も指定しない場合は、「-d」が指定されたものとして処理されます。
 

 
ちなみに、上記のように「-d」を省略して日時を指定することはできません。
エラーメッセージが表示されますが、「touch file.txt」が実行された状態でファイルが生成されます。
 
 

touch -m では ctimeのみを更新する

 
タイムスタンプのうち、ctimeのみを更新したい場合は「-m」のオプションを使います。
ただし、更新できるのは現在の日時のみで、日時を指定することはできません。
 

 
この場合は、mtime、atimeは更新されません。
chmodコマンドで、実行前と同じパーミッションを指定して実行した場合と同じ結果となります。
 
 

touch -a では ctime、atimeを更新する

 
タイムスタンプを更新するオプションとして、「-a」というオプションもあります。
このオプションでは、ctime、atimeの 2つを更新します。
また、更新できるのは現在の日時のみで、日時を指定することはできません。
 

 


 

touchコマンドのその他のオプションの使い方

 
touchコマンドにはその他にもいくつかオプションがあります。
 
 

touch file.txtでファイルがない場合は新規作成される

 

 
touchコマンドを実行した場合、指定したファイルが存在しない場合は、0バイトの空のファイルが生成されます。
 
 

touch -c では新規作成はされない

 
指定したファイルがない場合でも、ファイルを新規作成されたくない場合は「-c」のオプションを追加します。
 

 - Linuxコマンド

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

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

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

Linuxのマニュアルページ表示コマンドmanの解説
Linuxのマニュアルページ表示コマンドmanの解説

Linuxにはコマンド操作のオンラインマニュアルが用意されています。そのマニュアルを表示するコマンドが「man」です。「man」コマンドの使い方について解説します。

Linuxでファイルの内容を表示するcatコマンドの解説。more、lessで代替も
Linuxでファイルの内容を表示するcatコマンドの解説。more、lessで代替も

catはLinuxのコマンドで、本来の機能はファイルを連結だが、ファイルの内容を表示する機能のために使うことが多く使用頻度が高い。同種の機能のmore、less、tacコマンドについても解説。

Linuxのnlは行番号を付与してファイルの内容を表示するコマンド
Linuxのnlは行番号を付与してファイルの内容を表示するコマンド

Linuxでファイルを表示する際に行番号を付与するにはcatコマンドにnオプションを使うことでも可能。しかし、行番号を付与する専門のnlコマンドがある。ここではその使い方を詳細に解説。

cat、less、head、tail、split、sedなどLinuxでファイルを操作するコマンド
cat、less、head、tail、split、sedなどLinuxでファイル、文字列を操作するコマンド

Linuxでファイル、テキストを操作するコマンドのまとめ。cat、less、head、tail、split、tr、sedなど、ファイルを表示、置換、連結、分割などの各コマンドの使い方の紹介と詳細ページの紹介。

UNIX・Linuxの sedコマンドで特定の文字列を置換する方法

UNIX・Linuxのコマンドで特定の文字列を置換する sedコマンドの使い方と、perlコマンドを使っての方法を解説しています。

Linuxの wcコマンドでファイルの行数、単語数、バイト数、文字数をカウントする
Linuxの wcコマンドでファイルの行数、単語数、バイト数、文字数をカウントする

Linuxの行数、単語数、文字数、バイト数をカウントする「wc」コマンドの使い方の解説。find、lsと組み合わせてファイル数のカウント方法などを解説。

makewhatis、mandbコマンドでLinuxのオンラインマニュアル索引情報を更新
makewhatis、mandbコマンドでLinuxのオンラインマニュアル索引情報を更新

Linuxコマンドのオンラインマニュアルを検索するwhatis、aproposなどのコマンドはwhatisデータベースを対象に検索する。このデータベースを更新するmandb、makewhatisコマンドを解説。

less、moreはページャー、ファイルの中身を表示するLinuxのコマンド
less、moreはページャー、ファイルの中身を表示するLinuxのコマンド

Linuxにはコマンドで実行した結果が長い場合、1画面ごとに区切って表示するコマンドが用意されている。それがページャーと呼ばれるmore、lessだ。この使い方を解説。

Linuxのファイル表示・結合catの逆処理のtac、revコマンドの解説
Linuxのファイル表示・結合catの逆処理のtac、revコマンドの解説

Linuxにtac、revというコマンドがある。catの逆の処理なのだが、tacは最終行から逆に表示し、revは行末の文字から逆に表示をすることを解説しつつその使い方について詳しく解説をする。

Linuxのsplitコマンドは指定したサイズにファイルを分割する
Linuxのsplitコマンドは指定したサイズにファイルを分割する

Linuxのsplitコマンドはファイルを分割する機能を有する。分割するサイズ、行数、ファイル数を指定するオプションや、分割後のファイルの接尾辞を指定するオプションなどがある。