AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 130046
Accepted
calandoa
calandoa
Asked: 2010-04-08 02:05:45 +0800 CST2010-04-08 02:05:45 +0800 CST 2010-04-08 02:05:45 +0800 CST

Linux下刷新文件访问时间/丢弃磁盘读缓存

  • 772

我正在利用访问时间来分析一些构建过程,但它并没有按照我想要的方式工作:访问时间在我第一次读取文件时更新,然后它会长时间保持不变,或者直到下次重启。例如:

$ ll -u some_file
-rw-r--r-- 1 root root 1.3M 2010-04-07 10:03 some_file
$ grep abcdef some_file
$ ll -u some_file
-rw-r--r-- 1 root root 1.3M 2010-04-07 11:24 some_file
# The access time is updated

# waiting a few minutes...
$ grep abcdef some_file
$ ll -u some_file
-rw-r--r-- 1 root root 1.3M 2010-04-07 11:24 some_file
# The access time has not been updated :(

我想该文件是由Linux在空闲内存中缓冲的,出于速度原因,只有这个副本在随后的时间里被访问。一种解决方案是丢弃内存中的缓冲区。在搜索了一些论坛后,我发现:

sync
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches

但它不起作用,它似乎只同步写入缓冲区,而不是读取缓冲区。可能是由于我的发行版(fedora 9)上的一些自定义内核配置?

或者我在这里遗漏了什么?有没有办法实现这种访问时间刷新?

另请注意,我不想在整个文件树上模拟一些写入。因为我正在使用一些基于 makefile 的构建系统,这将导致整个项目再次被构建。

编辑:

我使用的是标准 ext3 文件系统,没有特殊选项。

/dev/sda1 on / type ext3 (rw)

我尝试使用strictatime(未识别)和atime(没有区别,我猜这是默认值)重新安装它。

linux time cache filesystems
  • 2 2 个回答
  • 2953 Views

2 个回答

  • Voted
  1. Kyle Brandt
    2010-04-08T03:41:20+08:002010-04-08T03:41:20+08:00

    您使用的是 noatime 还是 relatime 挂载选项?您可以查看您是否使用以下mount命令:

    [kbrandt@kbrandt-opadmin: ~] mount
    /dev/sda1 on / type ext3 (rw,relatime,errors=remount-ro)
    

    如果是这样,请在没有这些选项的情况下重新安装文件系统(或者在这种情况下可能更好的是编辑选项/etc/fstab并重新启动)。这些选项与文件系统无关。这些选项的描述在“FILESYSTEM INDEPENDENT MOUNT OPTIONS”中man mount,但基本上它们会阻止或限制时间被更新以提高性能。

    我不确定这是否是您问题的解决方案,但由于您取决于访问时间,我建议您无论如何都这样做。


    顺便说一句,您可能想在这里或在 stackoverflow 上询问有关分析您的特定构建过程的问题,以确保 atime 是正确的选择。


    更新:
    是否stat -c "%x" filename显示相同的内容?(忽略我的上次更新,没有注意到该-u选项...),但也许您的ll别名有问题,所以我会检查 stat 以确保。

    另外,您说/没有noatime,但是您是在根系统上而不是在另一个文件系统上进行这些测试,例如nfs mount之类的吗?

    是否touch -a -t 199812130530设法更改访问时间?

    • 3
  2. Best Answer
    calandoa
    2010-04-08T05:48:57+08:002010-04-08T05:48:57+08:00

    好的,这种行为实际上是由于特定的 Fedora 9 内核出于优化原因禁用了标准访问时间更新(为每次读取写入磁盘非常耗时)。

    设置了该选项DEFAULT_RELATIME(在我的情况下为内核 2.6.27.25),如果最后一次刷新发生在不到一天前,则禁用访问时间刷新。

    内核编译选项文档提供了norelatime 禁用此功能的内核引导选项......但它不起作用!

    为了成功修改这种行为,我实际上做了:

    echo 60 > /proc/sys/fs/relatime_interval
    

    这将这个间隔减少到 1 分钟。

    感谢您帮助我找到这个解决方案。

    • 2

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve