首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

图解|Linux文件预读原理

概述 本文主要阐述内核(linux-3.12)的文件系统预读设计和实现。...所谓预读,是指文件系统为应用程序一次读出比预期更多的文件内容并缓存在page cache中,这样下一次读请求到来时部分页面直接从page cache读取即可。...,共进行三次读(且是顺序读),那让我们看看操作系统是如何对文件进行预读的。...本次预读窗口的起始以及大小以及预读大小可根据前一次的预读窗口计算得到,又由于本次是异步预读,因此,预读大小就是本次读的页面数量,因此将本次预读的第一个页面(PAGE 4)添加预读标记。...,根据特定算法计算本次预读大小,更新预读窗口为 (12,16,16) ,新的预读窗口如下: 对该情境简单总结下,由于三次的顺序读加上内核的预读行为,文件的page cache中的状态当前如下图所示:

29410

Linux自动清理N天前目录文件

Linux服务器每周会产生一次全局备份文件,大小约100G左右,需要定期清理。 工作时间网站访问大,服务器I/O高的时候删除大数据会对服务器状态产生不好的影响。于是想利用计划任务自动执行。...--------------------------------------------------------------- 删除部分备份同时保留部分,可以使用find命令,如我要保留最近四周备份的文件...-type d:设置查找类型为目录 -mtime +28:查找28天前的目录 -------------------------------------------------------------...rm更具优势,具体原因请参考 《为什么rsync能够快速删除400000文件?》...提醒: 使用命令前,应先在服务器上试用查找部分的命令,如只查找出要清理的目录,则可以继续。 不排除某些系统会将./目录查找出来,一定要看清楚,防止出现意外情况。

1.7K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    fileinput 读文件

    批量打开多个文件 从上面的例子也可以看到,我在 fileinput.input 函数中传入了 files 参数,它接收一个包含多个文件名的列表或元组,传入一个就是读取一个文件,传入多件就是读取多个文件。...Linux的文件 if line[-2:] == "\r\n": line = line + "\n" sys.stdout.write(line) 附:如何实现 DOS...在最后一个文件的最后一行被读取之后,返回此文件中该行的行号。...fileinput.nextfile() 关闭当前文件以使下次迭代将从下一个文件(如果存在)读取第一行;不是从该文件读取的行将不会被计入累计行数。 直到下一个文件的第一行被读取之后文件名才会改变。...Linux的文件 if line[-2:] == "\r\n": line = line + "\n" sys.stdout.write(line) 案例四:配合 re

    3.2K10

    linux根据日期时间批量删除文件(删除N天前的文件)

    n分钟 之内-cmin n: 最后一次文件状态修改发生在 n分钟 至 (n+1)分钟-cmin +n: 最后一次文件状态修改发生在 (n+1)分钟 之外-ctime -n: 最后一次文件状态修改发生在...n天 之内-ctime n: 最后一次文件状态修改发生在 n天 至 (n+1) 天-ctime +n: 最后一次文件状态修改发生在 (n+1)天 之外-mmin -n: 最后一次文件内容修改发生在...n分钟 之内-mmin n: 最后一次文件内容修改发生在 n分钟 至 (n+1)分钟-mmin +n: 最后一次文件内容修改发生在 (n+1)分钟 之外-mtime -n: 最后一次文件内容修改发生在...3天前的文件)在/www/wwwroot/shengsi-zhejiang/public/uploads/spot/Array/face 目录下查找3天以前的所有类型的文件find /www/wwwroot...:希望查找的文件类型"*.jpg":表示查找扩展名为jpg的文件"*":表示查找所有类型的文件

    2K00

    Linux——查找占用磁盘体积最大的前10个文件

    前言 服务器上传文件失败了,才开始没考虑到磁盘原因还以为是自己的scrt的问题,还好df -h看了下,最后发现磁盘满了,真是.......查找 find / -type f -print0 | xargs -0 du -h | sort -rh | head -n 10 详解 find //在目录结构中搜索文件的命令 / //在整个系统(...从根目录开始)中查找 -type //指定文件类型 f //普通文件 -print0 //在标准输出显示完整的文件名,其后跟一个空字符(null) | //控制操作符,将一条命令的输出传递给下一个命令以供进一步处理...将标准输入转换成命令行参数的命令 -0 //以空字符(null)而不是空白字符(LCTT 译者注:即空格、制表符和换行)来分割记录 du -h //以可读格式计算磁盘空间使用情况的命令 sort //对文本文件进行排序的命令...-r //反转结果 -h //用可读格式打印输出 head //输出文件开头部分的命令 n -10 //打印前 10 个文件

    12310

    文件系统预读

    是指文件系统为应用程序一次读出比预期更多的文件内容并缓存在page cache中,这样下一次读请求到来时部分页面直接从page cache读取即可。...,共进行三次读(且是顺序读),那让我们看看操作系统是如何对文件进行预读的。...本次预读窗口的起始以及大小以及预读大小可根据前一次的预读窗口计算得到,又由于本次是异步预读,因此,预读大小就是本次读的页面数量,因此将本次预读的第一个页面(PAGE 4)添加预读标记。...Read 1 毫无疑问,由于第一次读肯定未在缓存命中,前一篇博客告诉我们需要进行一次同步预读,需要初始化预读窗口 initial_readahead: ra->start = offset; ra-...线程1 Read 1 线程1读文件的前两个页面,由于尚未缓存命中,因此会触发文件系统的一次同步预读,确定预读窗口为(ra->start, ra->size, ra->async_size) = (0,

    87120
    领券