You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅存在数毫秒的临时文件是否会被写入SSD?Ubuntu18.04+Python3.7场景

Linux短生命周期临时文件写入行为解答

默认行为说明

Linux内核默认采用**页缓存(Page Cache)**机制处理所有文件IO操作:

  • 写入文件的数据会首先暂存在内存的脏页区域,不会立刻写入物理磁盘
  • 触发脏页落盘的默认条件如下:
    • 脏页占总可用内存比例达到vm.dirty_background_ratio(默认10%),后台进程开始异步刷盘
    • 脏页占总可用内存比例达到vm.dirty_ratio(默认20%),写入进程会被阻塞等待同步刷盘
    • 脏页存在时长超过vm.dirty_expire_centisecs(默认3000,即30秒),会被强制刷入磁盘

如果你的脚本从提取JSON文件、处理到删除文件的完整流程耗时短于30秒,且全程没有手动调用fsync类强制刷盘接口、也没有触发上述刷盘阈值,那么这些临时文件的所有数据只会存在内存中,不会实际写入SSD,不会产生额外的写入损耗。

Python脚本的适配情况

Python默认的文件操作逻辑不会主动调用强制刷盘接口,除非你显式执行os.fsync()、或者使用O_SYNC等特殊标志打开文件,否则完全符合上述页缓存规则,短生命周期的临时文件不会落盘。

更稳妥的零写入优化方案

如果想要彻底杜绝临时文件写入SSD的可能性,可以采用以下两种方案:

  1. 使用tmpfs内存文件系统存储临时文件:Ubuntu 18.04默认的/tmp目录就是tmpfs挂载点,所有读写都在内存中完成,完全不会触及磁盘,你只需要把脚本的临时工作目录切换到/tmp下即可。
  2. 内存直接处理解压内容,完全不生成临时文件:借助Python的zipfile模块可以直接在内存中读取压缩包内的JSON内容,不需要落地到文件系统,从根源上消除写入行为,示例代码如下:
import zipfile
import json

with zipfile.ZipFile("你的压缩包路径.zip", "r") as zf:
    # 直接读取压缩包内指定JSON文件到内存变量
    json_raw = zf.read("压缩包内的JSON文件名.json").decode("utf-8")
    json_data = json.loads(json_raw)
    # 后续直接处理json_data即可

验证方法

你可以通过iostat命令实时监控磁盘写入情况,执行脚本时观察对应SSD设备的wMB/s指标,即可确认是否产生了实际写入:

# 每秒刷新一次磁盘IO统计
iostat -x 1

内容的提问来源于stack exchange,提问作者Cutton Eye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 19:39:03