GNU/Linux >> Linux の 問題 >  >> Linux

例で説明されたLinuxファイルのタイムスタンプ

このチュートリアルでは、Linuxファイルのタイムスタンプの種類と、touchを使用してファイルのタイムスタンプを表示および変更する方法について説明します。 例を含むコマンド。

Linuxファイルのタイムスタンプの簡単な紹介

LinuxおよびUnixでは、一般に、すべてのファイルに3種類のタイムスタンプがあります。つまり atime (アクセス時間)、 mtime (変更時間)と ctime (時間の変更)。名前が示すように、タイムスタンプは、ファイルがいつアクセス、変更、変更されたかを確認するために使用されます。

アクセス時間(または略してatime)のタイムスタンプは、ファイルが最後に読み取られた時間です。たとえば、ファイルを開いた可能性があります。このファイルは、他のプログラムまたはリモートマシンによってアクセスされた可能性があります。コマンド(例:cat)を使用してファイルの内容を読み取った可能性があります コマンド)、またはプログラム(gedit、vimなど)。ファイルは編集も変更もされていません。リモートシステムからあなたまたは他のユーザーのみがアクセスしました。

変更時刻(またはmtime)タイムスタンプは、ファイル(またはディレクトリ)が最後に変更された時刻を示します。つまり、mtimeは、ファイルの内容が変更された時刻を示します。たとえば、ファイルに何かを追加したり、ファイルから何かを削除したり、ファイルの内容を修正したりした可能性があります。

変更時刻(またはctime)タイムスタンプは、ファイルの内容またはファイルのメタデータ(つまり、ファイルの所有権、ファイルのアクセス許可、グループなどのファイル属性)が最後に変更された時刻を示します。

要約すると、

  • atime-最後のアクセスの時刻を示します 内容を読むためにファイルする。
  • mtime-最後の変更の時刻を示します ファイルの内容に。
  • ctime-最後の変更の時刻を示します ファイルの内容またはファイルのメタデータ(所有者、グループ、または権限)に移動します。

タイムスタンプは、さまざまな状況で役立ちます。タイムスタンプの使用例は次のとおりです。

  • アクセス時間または変更時間に基づいてファイルを検索して並べ替えます。
  • X日より古いファイルを見つけて削除します。ハードドライブ内の古いファイルをクリーンアップするのに便利です。
  • 構成ファイルがいつ変更されたかを確認します。
  • ファイルがアクセスされたかどうかを確認します。
  • ディレクトリが更新されたかどうかを確認します。
  • X日より古いまたは新しいファイルを検索します。

statを使用してLinuxファイルのタイムスタンプを表示する およびls コマンド

statを使用して、Linuxでファイルのタイムスタンプを表示できます。 指図。マニュアルページによると、stat コマンドは、Linuxのファイルまたはファイルシステムのステータスを表示します。 statコマンドはGNU Coreutilsの一部です 、わざわざインストールしないでください。

それでは、ostechnix.txtという名前のテキストファイルのタイムスタンプを確認しましょう。 statを使用する コマンド:

$ stat ostechnix.txt

出力例:

  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:31:01.484504149 +0530
Modify: 2020-11-11 17:31:01.484504149 +0530
Change: 2020-11-11 17:31:01.484504149 +0530
 Birth: -

上記の出力の最後の3行は、アクセス時間、変更時間、および変更時間のタイムスタンプをそれぞれ示しています。新しいファイルを作成するだけでは、すべてのタイムスタンプは同じです。

Birth:」という行に気づきましたか 「出力の最後に?ファイル作成時のタイムスタンプを示します。POSIX標準ではファイル作成のタイムスタンプが定義されていません。一部のファイルシステム(ext4、JFS、Btrfsなど)はこの値を保存しますが、現在LinuxカーネルAPIはありません。そのため、「Birth:」行にタイムスタンプの代わりにハイフン「-」が表示されます。

lsを使用して、atime、mtime、およびctimeのタイムスタンプを個別に取得することもできます。 コマンド。

変更時刻(mtime)のタイムスタンプを表示するには、ls -lを使用します コマンド:

$ ls -l ostechnix.txt 
-rw-rw-r-- 1 sk sk 21 Nov 11 17:31 ostechnix.txt

変更時刻(ctime)のタイムスタンプを表示するには、ls -lcを実行します。 コマンド:

$ ls -lc ostechnix.txt 
-rw-rw-r-- 1 sk sk 21 Nov 11 17:31 ostechnix.txt

ここでは、c フラグは、ファイルメタデータまたはファイル属性が最後に変更された時刻を表示するために使用されます。

ls -luを使用してアクセス時間(atime)タイムスタンプを表示する コマンド:

$ ls -lu ostechnix.txt 
-rw-rw-r-- 1 sk sk 21 Nov 11 17:31 ostechnix.txt

ここでは、 u フラグは、ファイルへの最後のアクセスの時刻を表示します。

touchを使用してLinuxファイルのタイムスタンプを変更する コマンド

touch コマンドは、ファイルのタイムスタンプを変更したり、Linuxで新しい空のファイルを作成したりするために使用されます。 statと同じように コマンド、touch コマンドはGNU coreutilsの一部でもあります 、したがって、インストールする必要もありません。

タイムスタンプを変更する前に、ostechnix.txtという名前のファイルの現在のタイムスタンプを取得しましょう。 参考:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:31:01.484504149 +0530
Modify: 2020-11-11 17:31:01.484504149 +0530
Change: 2020-11-11 17:31:01.484504149 +0530
 Birth: -

上記の出力でわかるように、ファイルostechnix.txt アクセスされました。同じ日時、つまり2020年11月11日の17:31:01に変更および変更されました。

touchを使用してこのファイルのタイムスタンプを変更しましょう 以下のようなコマンド:

$ touch ostechnix.txt

上記のコマンドは、すべてのタイムスタンプ(atime、mtime、ctimeなど)をコンピューターの現在の時刻に変更します。

次に、statを使用してファイルのタイムスタンプを見てみましょう。 コマンド:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:39:59.430610787 +0530
Modify: 2020-11-11 17:39:59.430610787 +0530
Change: 2020-11-11 17:39:59.430610787 +0530
 Birth: -

見る?すべてのタイムスタンプがシステムの現在の時刻に変更されました。つまり、2020-11-10 17:51:02

個々のタイムスタンプを個別に変更することもできます。たとえば、-aを使用して変更できるのは、アクセス時間(atime)のタイムスタンプのみです。 フラグ:

$ touch -a ostechnix.txt

上記のコマンドは、アクセス時間のタイムスタンプを現在の時間に設定します。

次に、ostechnix.txtのタイムスタンプを確認します statを含むファイル コマンド:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:43:46.555428706 +0530
Modify: 2020-11-11 17:39:59.430610787 +0530
Change: 2020-11-11 17:43:46.555428706 +0530
 Birth: -

上記の出力からわかるように、アクセス時刻は現在の時刻に変更されます。変更時刻も更新されます。

変更時刻のタイムスタンプ(mtime)のみを変更するには、-mを使用します フラグ:

$ touch -m ostechnix.txt

statでmtimeが変更されたかどうかを確認します コマンド:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:43:46.555428706 +0530
Modify: 2020-11-11 17:47:17.577722187 +0530
Change: 2020-11-11 17:47:17.577722187 +0530
 Birth: -

これで、mtimeとctimeのタイムスタンプが変更されましたが、atimeはそのままです。

アクセス時間や変更時間を変更するとお気づきかもしれませんが、ctimeも更新されます。

atimeとmtimeの両方のタイムスタンプを同時に変更する場合は、-dを使用します。 オプション。

$ touch -d "2020-11-11 17:50:01" ostechnix.txt

statを使用して、atimeおよびmtimeのタイムスタンプが変更されているかどうかを確認します コマンド:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:50:01.000000000 +0530
Modify: 2020-11-11 17:50:01.000000000 +0530
Change: 2020-11-11 17:51:17.024213698 +0530
 Birth: -

アクセス時間と変更時間を特定の時間に設定しました。つまり、2020-11-11 17:50:01 。また、ctimeタイムスタンプも現在の時刻に更新されました。

-tを使用して、現在の時刻の代わりに特定のタイムスタンプを使用することもできます。 フラグも:

$ touch -t 2011111754 ostechnix.txt

このコマンドは、atimeとmtimeのタイムスタンプを2020-11-11 17:54:00に設定します。 。 statで確認してください 以下のようなコマンド:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:54:00.000000000 +0530
Modify: 2020-11-11 17:54:00.000000000 +0530
Change: 2020-11-11 17:56:20.844405239 +0530
 Birth: -

すでに述べたように、ctimeはatimeとmtimeが変更されると更新されます。 ctimeタイムスタンプのみを変更する場合は、touchに専用のフラグはありません。 指図。したがって、ファイルのメタデータまたはファイルの属性を変更して、ctimeを手動で変更する必要があります。たとえば、実行可能権限を割り当てます ostchnix.txtchmodを含むファイル コマンド:

$ chmod +x ostechnix.txt

ctimeがstatで更新されるかどうかを確認します コマンド:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:54:00.000000000 +0530
Modify: 2020-11-11 17:54:00.000000000 +0530
Change: 2020-11-11 17:57:21.022720776 +0530
 Birth: -

見る? ctimeタイムスタンプは変更されましたが、atime時間とmtime時間は変更されませんでした。ファイルはどちらもアクセスされていないため、変更されていません。ファイルのアクセス許可のみを変更しました。

ファイルを表示、アクセス、または変更して、ファイルのタイムスタンプを変更する

すでに述べたように、読み取りのためにファイルにアクセスすると、atimeタイムスタンプが変更されます。 catを使用して読み取り用のファイルにアクセスしてみてください コマンドを実行して、何が起こるかを確認します。

$ cat ostechnix.txt
This is a text file.

次に、アクセス時間のタイムスタンプが更新されているかどうかを確認します。

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 18:00:16.005323521 +0530
Modify: 2020-11-11 17:54:00.000000000 +0530
Change: 2020-11-11 17:57:21.022720776 +0530
 Birth: -

見る? atimeの値が変更されました。

ファイルにデータを追加またはファイルから削除すると、mtimeが更新されます。

ostechnix.txtに行を追加しましょう ファイル:

$ echo "modify this file" >> ostechnix.txt

ファイルのタイムスタンプを確認します:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 38        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 18:00:16.005323521 +0530
Modify: 2020-11-11 18:01:49.072771458 +0530
Change: 2020-11-11 18:01:49.072771458 +0530
 Birth: -

ファイルの内容が変更されたため、そのmtimeとctimeの両方が変更されました。

シンボリックリンクのタイムスタンプを変更する

デフォルトでは、touchを使用する場合 シンボリックリンクのコマンド (またはシンボリックリンク)、参照ファイルのタイムスタンプも変更します。

シンボリックリンクのタイムスタンプのみを変更する場合は、-hを使用します 、(--no-dereference )オプション:

$ touch -h <path-to-symlink>

[ボーナスのヒント]別のファイルからタイムスタンプをコピーする

touchコマンドには、-r, (--reference=)というオプションがあります。 これにより、あるファイルから別のファイルにタイムスタンプをコピーできます。

次のコマンドは、file1のタイムスタンプをfile2にコピーします。

$ touch -r file1.txt file2.txt

詳細については、statのマニュアルページを参照してください。 およびtouch コマンド:

$ man stat
$ man touch

結論

このガイドでは、3種類のLinuxファイルタイムスタンプ(atime、mtime、ctime)、statを使用してファイルタイムスタンプを表示する方法について説明しました。 およびls コマンドと最後にtouchでそれらのファイルのタイムスタンプを変更する方法 指図。これがお役に立てば幸いです。


Linux
  1. Linuxでの並べ替えコマンドと例

  2. LinuxでVmstatコマンドを使用する方法を例で説明します

  3. Linuxのファイルタイムスタンプ:atime、mtime、ctimeの説明

  1. Linuxカットコマンドを6つの例で説明

  2. 例を含む10のクイックLinuxテールコマンド

  3. Linux Tracerouteコマンド、例を使用して説明

  1. 初心者向けのLinuxcksumコマンドの説明(例付き)

  2. Linuxのlddコマンドを例で説明

  3. 例を含むLinuxTailコマンド