发布于2026-07-01 阅读(0)
扫一扫,手机访问
在日常运维银河麒麟V10系统的过程中,一个很容易被忽视但又颇为棘手的问题,就是/tmp目录下的临时文件到底会不会在重启时被清空。这事儿本身不难理解,系统默认行为就是重启清理,但真到了需要保留跨会话的调试日志,或者某些应用持续生成的中间文件时,这种行为就变成了麻烦。所以,问题的核心在于:如何精准控制临时文件的“过期时间”,让它按你的需求去留。听起来是件小事,但如果策略选错了,要么空间被撑爆,要么刚写好的数据就没了影。

先说第一个,也是最直接的方法——修改 TMPTIME 参数。这个参数藏在 /etc/default/rcS 文件里,它只管系统启动时那一趟活儿。你把它设为 7,就意味着重启时只清空那些7天前的文件;设为 -1,那就永久保留,系统启动时一丝不动。操作很简单,用编辑器打开那个配置文件,找到或者新建一行 TMPTIME=0,改成你需要的值就行。有一点必须提醒:这个改动只在下一次重启后才生效,当前正在运行的文件不受影响。所以别指望改了之后立刻就看到变化。
如果说 TMPTIME 是一把大刀,那把 systemd-tmpfiles 就是一把精细的手术刀。特别是当你需要对 /var/tmp 或者某个自定义路径如 /data/temp 制定独立的清理规则时,它的优势就完全体现出来了。
具体怎么用?创建一条自定义规则文件。举个例子:echo 'v /var/tmp 1777 root root 30d' | sudo tee /etc/tmpfiles.d/custom-vartmp.conf。这条命令里的 30d 就是核心,表示清理30天前未被访问的文件。你也可以根据需要改成 7d、1h,甚至更精细的单位。关键在于,这个方法只针对你指定的路径,不会影响到系统默认的 /tmp 行为。如果你希望立即验证规则是否生效,可以用 sudo systemd-tmpfiles --create /etc/tmpfiles.d/custom-vartmp.conf 直接触发一次清理。值得注意的一个细节是:/usr/lib/tmpfiles.d/ 下的系统默认规则优先级低于 /etc/tmpfiles.d/,因此自定义配置会覆盖同名路径的默认行为。
但如果你需要的不是按天、按周,而是按小时甚至分钟级的清理粒度——比如,希望每2小时清理一次超过4小时的临时文件——那前面两种方法就有点力不从心了。这时候,tmpreaper 就是最佳选择。它不依赖系统重启,完全靠定时任务驱动。
安装工具很简单:sudo apt install tmpreaper。安装后可以先用 sudo tmpreaper 12h /tmp 手动执行一次测试,看看哪些文件会被清理。确认没问题后,写入一个定时任务就好:echo '0 1 * * * /usr/bin/tmpreaper 12h /tmp' | sudo tee -a /var/spool/cron/crontabs/root,然后重启 cron 服务。这样每天凌晨1点,系统就会自动清理掉12小时前的文件。
最后提一句,tmpreaper 默认会跳过正被进程占用的文件,安全性比简单粗暴的 find -delete 要高得多。当然,它也有局限性——无法处理硬链接或符号链接指向的文件。不过,在绝大多数临时文件管理的场景下,这个工具已经足够可靠。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9