银河麒麟系统中/tmp目录需精准清理过期缓存文件,优先使用systemd-tmpfiles自动轮转;手动清理须避开运行时关键文件;紧急清空需按序停止服务、卸载挂载、选择性删除并重建目录结构。

银河麒麟系统中/tmp目录长期堆积过期缓存文件会导致磁盘空间告急、服务启动失败或临时文件冲突,必须精准清除已失效文件而不能暴力清空整个/tmp——因为部分正在运行的服务(如dbus、gdm3、systemd-tmpfiles)会实时写入关键临时套接字和锁文件,直接rm -rf /tmp/*可能引发图形界面崩溃或登录循环。
用systemd-tmpfiles自动轮转清理
这是最安全、最符合麒麟OS设计规范的方式,由系统原生服务按预设规则定期处置,无需人工干预,且默认已启用。
检查当前是否已加载轮转规则:systemctl list-timers | grep tmpfiles
查看默认生效的清理配置:ls /usr/lib/tmpfiles.d/*.conf 2>/dev/null | grep -E "(systemd|basic)"
若未发现有效规则,手动启用标准策略:sudo systemd-tmpfiles --create --remove --clean
该命令会立即执行三步操作:①创建缺失的临时目录结构;②移除已过期的临时文件(依据各conf中定义的age参数);③对剩余文件执行周期性清理扫描。【所有操作均基于mtime/ctime判断,不误删正在被进程open(fd)持有的文件】
终端手动查找并删除指定过期时间的缓存文件
适用于需立即释放空间、且已确认/tmp下无关键运行时文件的场景(例如系统刚重启、无用户登录、无Docker容器运行)。
方法一:删除7天前创建且未被访问的缓存文件
find /tmp -type f -name "*.cache" -o -name "cache.*" -o -name "tmp.*" -o -name "*-cache" -ctime +7 -delete
方法二:删除10分钟前修改且文件大小超过1MB的临时文件(适合清理编译残留、下载中断碎片)
find /tmp -type f -mmin +10 -size +1M -delete
注意:-delete选项在find中是原子操作,但务必先用-print替代-delete做一次dry-run验证路径,例如:find /tmp -type f -name "*.cache" -ctime +7 -print
强制清空/tmp但保留运行必需子目录
当磁盘已满到无法启动任何服务、且确认可接受短暂图形界面中断时使用,此操作风险最高,必须严格按顺序执行。
第一步:停止依赖/tmp的系统服务
sudo systemctl stop gdm3 dbus-org.freedesktop.login1.service systemd-logind
第二步:卸载可能挂载在/tmp下的临时文件系统
sudo umount -l /tmp || true
第三步:仅删除非目录项与非套接字文件,跳过/tmp下所有以点开头的隐藏目录及socket文件
sudo find /tmp -depth -mindepth 1 \( -type f -o -type c -o -type b \) -not -name ".*" -not -name "*.sock" -delete
第四步:重建标准临时目录结构并重设权限
sudo mkdir -p /tmp/{ssh-*,snapd,flatpak} && sudo chmod 1777 /tmp
第五步:重启基础服务恢复图形环境
sudo systemctl start dbus-org.freedesktop.login1.service systemd-logind gdm3

















