web-dev-qa-db-ja.com

ファイルが変更されると、ディレクトリのmtimeとctimeが変更されるのはなぜですか?

ファイルとディレクトリに関して、atime、ctime、mtimeについて学習しています。ディレクトリ内のファイルを変更しても、iノードまたはファイルの内容の「ディレクトリファイル」自体は変更していないため、ctimeとmtimeは変更しないでください。

しかし、次のテストでは、ファイルを編集したときに変更時刻と変更時刻が変更されました。なぜ変わったのですか?

$ ls    

blah.txt  test.txt  test.txt~

$ cd ..

$ stat -x Write
      File: "Write"
      Size: 170          FileType: Directory
      Mode: (0777/drwxrwxrwx)         Uid: (  501/user)  Gid: (   20/   staff)
    Device: 1,4   Inode: 652017    Links: 5
    Access: Tue Aug 11 08:20:33 2015
    Modify: Tue Aug 11 08:01:49 2015
    Change: Tue Aug 11 08:01:49 2015

$ cd Write

$ ls
    blah.txt  test.txt  test.txt~

$ emacs test.txt

$ cd ..

$ stat -x Write
      File: "Write"
      Size: 170          FileType: Directory
      Mode: (0777/drwxrwxrwx)         Uid: (  501/user)  Gid: (   20/   staff)
    Device: 1,4   Inode: 652017    Links: 5
    Access: Tue Aug 11 08:20:48 2015
    Modify: Tue Aug 11 08:20:48 2015
    Change: Tue Aug 11 08:20:48 2015
7
MathStudent

emacsを実行すると、バックアップファイルが作成されます。彼の場合はtest.txt~です。その名前のファイルがすでに存在する場合は、そのファイルを削除して新しいファイルを作成すると思われます。その新しいファイルの作成は、ディレクトリを変更し、したがって、その変更および変更された時間を更新します。

そうであれば、代わりにecho new line >> blah.txtと言っても、追加のファイルは作成されないので、ディレクトリのエントリは更新されません。この場合、シェルは単にファイルを開きます(追加用)。

9
Eric Renouf