银河麒麟v10中/tmp重启后清空需修改tmptime参数(如tmptime=7或-1)或通过systemd-tmpfiles为/var/tmp等路径设独立清理策略,也可用tmpreaper实现小时级定时清理。

如果您发现银河麒麟V10系统中/tmp目录下的临时文件总在重启后消失,而您需要保留调试日志或跨会话的临时数据,就必须修改系统对临时文件的缓存有效期——这并非调整内核页缓存,而是控制/tmp等目录中文件的自动清理生命周期。
修改TMPTIME参数控制/tmp清理周期
该参数直接决定系统启动时是否清空/tmp,以及保留多久的旧文件。它不作用于~/.cache或/var/log,仅影响/tmp及/var/tmp(若配置了对应tmpfiles规则)。
第一步:打开系统默认初始化配置文件:sudo nano /etc/default/rcS
第二步:查找是否存在TMPTIME=0这一行;若无,则在文件末尾新增一行;若有,将其值改为所需天数(如保留7天:TMPTIME=7)或永久保留(TMPTIME=-1)。
第三步:保存退出。该设置将在下次重启时生效。注意:当前运行中的/tmp文件不会被立即清理或保留,只影响下一次系统启动时的清理行为。
用systemd-tmpfiles为/var/tmp等路径单独设有效期
当您需要对/var/tmp或自定义路径(如/data/temp)实施独立于TMPTIME的清理策略时,此方法更精准。
方法一:创建自定义规则文件
执行命令:echo 'v /var/tmp 1777 root root 30d' | sudo tee /etc/tmpfiles.d/custom-vartmp.conf
其中30d表示清理30天前未访问的文件;v代表“volatile”,即该路径适用生命周期管理。
方法二:立即触发一次清理以验证规则是否生效
sudo systemd-tmpfiles --create /etc/tmpfiles.d/custom-vartmp.conf
提示:/usr/lib/tmpfiles.d/下的系统默认规则优先级低于/etc/tmpfiles.d/,因此自定义配置会覆盖同名路径的默认行为。
通过tmpreaper实现按小时粒度清理/tmp
tmpreaper适合需精细控制时间阈值(如每2小时清理一次超过4小时的临时文件)且不依赖系统重启的场景。
1、安装工具:sudo apt install tmpreaper
2、手动执行一次清理测试(清除/tmp下超12小时的文件):sudo tmpreaper 12h /tmp
3、写入root定时任务,每天凌晨1点运行:echo '0 1 * * * /usr/bin/tmpreaper 12h /tmp' | sudo tee -a /var/spool/cron/crontabs/root
4、重启cron服务:sudo systemctl restart cron
注意:tmpreaper默认跳过正被进程占用的文件,安全性高于简单find -delete,但无法处理硬链接或符号链接指向的文件。











