ファイルのタイムスタンプ


アニメ『ヲタクに恋は難しい』

登場する人たちが全然ヲタクに見えません。ヲタクなことをやってても、ヲタクに見えず、ただのマニアな人たちに見えます。ヲタクの二人が恋人になって会社帰りに居酒屋デートって、いやいや普通の人たちじゃないですか。そして、美男美女。だめだろう、ヲタを気取っては。
批判気味なのは、自称アニヲタの私が、本物のアニヲタの友人たちから、けちょんけちょんに、貶されたからでアリマス。毎日アニメは夜中まで見てるのですが、友人たちから言わせると、全然見てないレベルだそうです。本当にアニメが好きなら、会社に行けるわけないらしいです。
確かに。朝になったら、会社には行っちゃうなあ、自分。そこまでアニメが好きじゃないかもしれません。
ということで、もっとアニメ見ます。

さきほど「居酒屋デート」と書いていて、最近は日付に関しての記事を書いてないような気がしたので、今回はファイルの日付と時刻、つまりタイムスタンプについて確認してみようかと思います。

まずは、適当にファイルを作成します。aというファイル名にしました。

takk@deb9:~/tmp$ ls
takk@deb9:~/tmp$ date
2018年  6月 12日 火曜日 22:39:34 JST
takk@deb9:~/tmp$ echo HELLO >a
takk@deb9:~/tmp$ 

作成したファイルaをstatで確認。

takk@deb9:~/tmp$ stat a
  File: a
  Size: 6         	Blocks: 8          IO Block: 4096   通常ファイル
Device: 801h/2049d	Inode: 546991      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/    takk)   Gid: ( 1000/    takk)
Access: 2018-06-12 22:39:40.492000000 +0900
Modify: 2018-06-12 22:39:40.492000000 +0900
Change: 2018-06-12 22:39:40.492000000 +0900
 Birth: -
takk@deb9:~/tmp$ 

statで Access、Modify、Changeと、3種類のタイムスタンプが表示されます。
Accessは、アクセス日時、Modifyは更新日時、Changeはステータス変更日時です。
新規でファイルを作成すると、これらすべてに、作成した日時のタイムスタンプが刻まれます。

では、今作成したファイルaの内容をcatで表示してみます。

takk@deb9:~/tmp$ date
2018年  6月 12日 火曜日 22:40:59 JST
takk@deb9:~/tmp$ cat a
HELLO
takk@deb9:~/tmp$

もうこれだけで、ファイルのタイムスタンプは変わってしまいます。

statで確認すると、

takk@deb9:~/tmp$ stat a
  File: a
  Size: 6         	Blocks: 8          IO Block: 4096   通常ファイル
Device: 801h/2049d	Inode: 546991      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/    takk)   Gid: ( 1000/    takk)
Access: 2018-06-12 22:41:01.956000000 +0900
Modify: 2018-06-12 22:39:40.492000000 +0900
Change: 2018-06-12 22:39:40.492000000 +0900
 Birth: -
takk@deb9:~/tmp$ 

Access日時だけ更新されました。

そういえば、statコマンドのファイルにアクセスしていますね。statコマンドでもAccess日時は更新されるのでしょうか。もう一度statを実行してみます。

takk@deb9:~/tmp$ date
2018年  6月 12日 火曜日 22:41:50 JST
takk@deb9:~/tmp$ stat a
  File: a
  Size: 6         	Blocks: 8          IO Block: 4096   通常ファイル
Device: 801h/2049d	Inode: 546991      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/    takk)   Gid: ( 1000/    takk)
Access: 2018-06-12 22:41:01.956000000 +0900
Modify: 2018-06-12 22:39:40.492000000 +0900
Change: 2018-06-12 22:39:40.492000000 +0900
 Birth: -
takk@deb9:~/tmp$ 

タイムスタンプは変更されませんでした。

lsコマンドではどうでしょう。

takk@deb9:~/tmp$ ls -l a
-rw-r--r-- 1 takk takk 6  6月 12 22:39 a
takk@deb9:~/tmp$ 

lsの後に、statで確認。

takk@deb9:~/tmp$ stat a
  File: a
  Size: 6         	Blocks: 8          IO Block: 4096   通常ファイル
Device: 801h/2049d	Inode: 546991      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/    takk)   Gid: ( 1000/    takk)
Access: 2018-06-12 22:41:01.956000000 +0900
Modify: 2018-06-12 22:39:40.492000000 +0900
Change: 2018-06-12 22:39:40.492000000 +0900
 Birth: -
takk@deb9:~/tmp$ 

statと同じくlsでもタイムスタンプは変更されませんでした。

ちなみにlsでアクセス時間を確認するには、-luオプション。Accessのaではなくuってところが分かりづらいです。

takk@deb9:~/tmp$ ls -lu a
-rw-r--r-- 1 takk takk 6  6月 12 22:41 a
takk@deb9:~/tmp$ 

次はタイムスタンプを変更してみます。
touchコマンドでタイムスタンプを変更することができます。

takk@deb9:~/tmp$ touch -d 2011-11-11 a
takk@deb9:~/tmp$ stat a
  File: a
  Size: 6         	Blocks: 8          IO Block: 4096   通常ファイル
Device: 801h/2049d	Inode: 546991      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/    takk)   Gid: ( 1000/    takk)
Access: 2011-11-11 00:00:00.000000000 +0900
Modify: 2011-11-11 00:00:00.000000000 +0900
Change: 2018-06-12 22:47:19.316000000 +0900
 Birth: -
takk@deb9:~/tmp$ 

AccessとModifyを2011年11月11日に変更しました。
Changeの方は、touchで変更した時の、時刻で更新されます。Changeは任意の時間に変更することができません。改ざん防止ですかね。

lsコマンドでは-lcでChangeの日時が確認できます。

takk@deb9:~/tmp$ ls -lc a
-rw-r--r-- 1 takk takk 6  6月 12 22:47 a
takk@deb9:~/tmp$ 

つづく

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA