web-dev-qa-db-ja.com

新しいファイルに触れると、なぜmtimeとctimeがatimeより古いのですか?

私はこれを持っています:

$ ls -l ff
ls: cannot access ff: No such file or directory


$ touch ff
$ stat ff
  File: `ff'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 803h/2051d  Inode: 1057193     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/   abc)   Gid: (    0/    root)
Access: 2011-09-18 20:36:08.351097228 -0700
Modify: 2011-09-18 20:36:07.340839847 -0700
Change: 2011-09-18 20:36:07.340839847 -0700

Mtimeとctimeがatimeより古いのはなぜですか?

3
Ankur Agarwal

そのディレクトリへの変更を監視している何かを実行している可能性がありますか?

シェルプロンプトだけを実行してこれを試してみると、アクセス時間ffは変更時間と変更時間に一致します。しかし、ディレクトリでNautilus(GNOMEファイルマネージャ)ウィンドウを開いて試してみると、アクセス時間はほぼ正確に1秒遅れています。

私の場合、Nautilusはウィンドウが開いているため、そのディレクトリへの変更を監視しています。新しいファイルが作成されたことを確認し、表示するアイコンを知りたいので、ファイルを調べて、ファイルの種類を確認します。これにより、アクセス時間が更新されます。

6
Jander

少なくとも通常のタッチコマンドに関する限り、この1秒の違いの理由はありません。

 $ ls -l zz
    ls: cannot access zz: No such file or directory
    $ touch zz
    $ stat zz
      File: `zz'
      Size: 0           Blocks: 0          IO Block: 4096   regular empty file
    Device: 808h/2056d  Inode: 265633      Links: 1
    Access: (0644/-rw-r--r--)  Uid: ( 1000/jlliagre)   Gid: ( 1000/jlliagre)
    Access: 2011-09-19 07:35:50.679679571 +0200
    Modify: 2011-09-19 07:35:50.679679571 +0200
    Change: 2011-09-19 07:35:50.679679571 +0200

Straceを使用して、作成されたファイルにタッチで影響を与える唯一のシステムコールを確認します。

open("zz", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
dup2(3, 0)                              = 0
close(3)                                = 0
utimensat(0, NULL, NULL, 0)             = 0
close(0)                                = 0

Trueの場合、ファイルの作成後にファイルにアクセスするデーモンなど、アンチウイルスなどが存在する可能性があります。

1
jlliagre