【问题标题】:When does a UNIX directory change its timestampUNIX 目录何时更改其时间戳
【发布时间】:2011-03-27 23:35:09
【问题描述】:

我在文件上使用了“触摸”,更新了文件的时间戳,但父目录的时间戳没有改变。但是,(如预期的那样)当我在父目录中创建一个新文件时,该目录的时间戳确实发生了变化。

类 UNIX 操作系统(特别是 AIX)使用什么标准来确定何时更新目录的时间戳?

【问题讨论】:

    标签: unix unix-timestamp


    【解决方案1】:

    当目录中存在任何文件/目录的添加或删除时,该目录被视为已更改。如果现有文件/目录刚刚更新,则父目录时间戳不会改变。

    【讨论】:

      【解决方案2】:

      您可以使用 stat 命令来查找文件/目录的修改时间、创建时间等。 参考https://linux.die.net/man/2/stat

      文章指出: 目录的 st_mtime 通过在该目录中创建或删除文件而更改。 st_mtime 字段不会因所有者、组、硬链接计数或模式的更改而更改。

      【讨论】:

      • 感谢您的回复,但此回复并未回答任何原始问题。问题是关于用于确定操作(更新时间戳)的标准,而不是用于完成操作的 c 库。
      • 他在第二段中回答...?
      【解决方案3】:

      目录本身更改时,目录的时间戳也会更改。该目录包含目录中文件的 inode 列表等内容,因此当您通过添加或删除文件来更改目录的内容时,目录时间戳将被更新。

      【讨论】:

      • 你的意思是,如果与一个目录关联的块数发生变化,那么它的修改时间会改变吗?
      • 不完全。添加或删除文件时,目录时间戳会发生变化。这可能会导致目录中的块数发生变化,但不一定。一个块将能够存储许多 inode 记录,因此块的数量不会随着每个新文件的添加而改变。
      【解决方案4】:

      时间戳会在代表目录的数据发生变化时更新。目录 D 的子目录中的更改不会更改 D 表示中的任何内容,因为 D 仅指向子目录,而不指向其中的内容。另一方面,在 D 中创建文件会更改磁盘上代表 D 的数据块。

      【讨论】:

        猜你喜欢
        • 2020-04-20
        • 2017-12-17
        • 1970-01-01
        • 2014-12-23
        • 1970-01-01
        • 2018-03-24
        • 2013-03-23
        • 2021-02-12
        • 1970-01-01
        相关资源
        最近更新 更多