跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C

文件的时间属性与时间戳管理

文件包含访问、修改及状态更改三种时间属性。st_atim 记录数据最后访问时间,st_mtim 记录内容最后修改时间,st_ctim 记录 i 节点状态最后更改时间。系统操作如读写文件或修改权限会更新对应时间戳。ls 命令支持按这三种时间排序显示。目录项变更会影响父目录时间戳。

晚风告白发布于 2018/6/24更新于 2026/7/2141 浏览
文件的时间属性与时间戳管理

在相关章节中,我们讨论了 Single UNIX Specification 2008 版如何提高 stat 结构中时间字段的精度,从原来的秒提高到秒加上纳秒。每个文件属性所保存的实际精度依赖于文件系统的实现。对于把时间戳记录在秒级的文件系统来说,纳秒这个字段就会被填充为 0。对于时间戳的记录精度高于秒级的文件系统来说,不足秒的值被转换成纳秒并记录在纳秒这个字段中。

对每个文件维护 3 个时间字段,它们的意义如下表所示。

字段说明例子ls(l) 选项
st_atim / st_mtim / st_ctim文件数据的最后访问时间 / 文件数据的最后修改时间 / i 节点状态的最后更改时间read / write / chmod、chown-u / 默认 / -c

注意,修改时间(st_mtim)和状态更改时间(st_ctim)之间的区别。修改时间是文件内容最后一次被修改的时间。状态更改时间是该文件 i 节点最后一次被修改的时间。在本章中我们已说明了很多影响 i 节点的操作,如更改文件的访问权限、更改用户 ID、更改链接数等,但它们并没有更改文件的实际内容。因为 i 节点中的所有信息都是与文件的实际内容分开存放的,所以,除了要记录文件数据修改时间以外,还需要记录状态更改时间,也就是更改 i 节点中信息的时间。

注意,系统并不维护对一个 i 节点的最后一次访问时间,所以 access 和 stat 函数并不更改这三个时间中的任一个。

系统管理员常常使用访问时间来删除在一定时间范围内没有被访问过的文件。典型的例子是删除在过去一周内没有被访问过的名为 a.out 或 core 的文件。find(l) 命令常被用来进行这种类型的操作。

修改时间和状态更改时间可被用来归档那些内容已经被修改或 i 节点已经被更改的文件。

ls 命令按这 3 个时间值中的一个排序进行显示。系统默认(用-l 或-t 选项调用时)是按文件的修改时间的先后排序显示。-u 选项使 ls 命令按访问时间排序,-c 选项则使其按状态更改时间排序。

相关函数对这 3 个时间的作用总结如图表所示。回忆相关章节中所述,目录是包含目录项(文件名和相关的 i 节点编号)的文件,增加、删除或修改目录项会影响到它所在目录相关的 3 个时间。这就是与所引用的文件(或目录)的父目录相关的 3 个时间。例如,创建一个新文件影响到包含此新文件的目录,也影响新文件的 i 节点。但是,读或写一个文件只影响该文件的 i 节点,而对目录则无影响。

  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 38 岁俄罗斯程序员 20 年编码生涯的 16 条人生建议
  • OpenClaw 部署与飞书机器人接入实战指南
  • 本地化 AI 量化分析平台搭建:Docker 部署与波浪理论实战
  • 零基础转行网络安全:Web 安全入门与学习路线指南
  • C++ 标准库:map 与 set 容器详解与实战
  • Dubbo 源码解析:与 Spring 如何实现无缝对接
  • Go Web 开发核心理论:HTTP、MySQL 与常用组件
  • AI 产品经理机器学习实战流程指南
  • Web 自动化测试入门:从概念到百度搜索实战
  • 网络安全学习平台盘点:七个从新手到进阶的资源
  • 基于空间注意力机制的神经网络 SANN 设计与实现
  • C++11 手写 Promise 实现及与 std::promise 对比
  • Java 核心面试知识点梳理:基础、JVM、并发与框架实战
  • Spring Cloud 与 Dubbo 架构选型:生态全家桶 vs RPC 特种兵
  • Eino 组件核心篇:Retriever 与 RAG 检索协议详解
  • 量子仿真新进展:Walsh-Hadamard 变换硬件架构优化解析
  • C++ 进阶笔记:引用、重载与内存管理
  • 后端开发必备:HTML 前端基础实战指南
  • C++ 类和对象(中):默认成员函数与运算符重载
  • MC.JS WEBMC1.8 与传统 JavaScript 开发效率对比

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online