银河麒麟V10如何修改系统文件缓存有效期
在日常运维银河麒麟V10系统的过程中,一个容易被忽略但颇为棘手的问题,是/tmp目录下的临时文件是否会在重启时被清空。系统默认行为是重启清理,但当需要保留跨会话的调试日志,或某些应用持续生成的中间文件时,这种默认行为就会带来麻烦。因此,问题的核心在于:如何精准控制临时文件的“过期时间”,使其按需保留
在日常运维银河麒麟V10系统的过程中,一个容易被忽略但颇为棘手的问题,是/tmp目录下的临时文件是否会在重启时被清空。系统默认行为是重启清理,但当需要保留跨会话的调试日志,或某些应用持续生成的中间文件时,这种默认行为就会带来麻烦。因此,问题的核心在于:如何精准控制临时文件的“过期时间”,使其按需保留或删除。这看似小事,但策略选择不当,要么空间被撑爆,要么刚写好的数据就丢失。

方法一:直接修改TMPTIME参数控制/tmp清理
第一个也是最直接的方法是修改 TMPTIME 参数。该参数位于 /etc/default/rcS 文件中,仅影响系统启动时的清理行为。将其设为 7,表示重启时只清空7天前的文件;设为 -1,则永久保留,系统启动时不解任何文件。操作简单:用编辑器打开配置文件,找到或新建一行 TMPTIME=0,改为所需值即可。需注意:此改动只在下一次重启后生效,当前运行的文件不受影响,因此不能立即看到变化。
方法二:使用systemd-tmpfiles精准设置/var/tmp等路径有效期
如果说 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/,因此自定义配置会覆盖同名路径的默认行为。
方法三:通过tmpreaper实现按小时粒度清理/tmp
当需要按小时甚至分钟级粒度清理时——例如,希望每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。当然,它无法处理硬链接或符号链接指向的文件,但在绝大多数临时文件管理场景下已足够可靠。
