麒麟系统磁盘空间不足?清理tmp文件夹
麒麟系统/tmp分区显示空间不足但实际文件体积很小,通常是“已删除文件仍被进程占用”所致。解决方案包括:强制清空/tmp目录;使用lsof命令定位并终止占用已删除文件的进程;将/tmp挂载为tmpfs实现重启自动清空;配置systemd-tmpfiles进行周期性清理;或将大体积临时数据迁移至其他分区。根据实际情况选择合适方法即可。
麒麟系统 /tmp 分区占满的精准排查与根治方案

在麒麟系统中,“磁盘空间不足”是用户经常遇到的警示信息。尤其棘手的情况是,当使用 df -h 检查时,/tmp 分区显示占用率达100%,但执行 ls -lh /tmp 后却发现实际文件体积很小。这种“空间消失”的异常现象,通常由“已删除文件仍被进程占用”导致。文件虽已从目录中移除,但若进程持续持有文件句柄,磁盘空间便无法释放。以下提供从应急清理到根治预防的完整方案,帮助系统性解决麒麟系统 /tmp 分区占满问题。
一、强制清空 /tmp 目录(基础操作)
该方法适用于临时文件堆积、且无关键后台进程长期依赖 /tmp 的场景。它可清除所有未被运行时锁定的文件。
首先,打开终端并获取 root 权限:sudo -i。
接着,执行清空命令:rm -rf /tmp/*。该命令将递归删除 /tmp 目录下所有内容。
然后,确保操作同步至磁盘:sync。
最后,验证效果:再次运行 df -h /tmp,观察可用空间是否恢复。
二、定位并释放被占用的已删除文件(解决空间未释放核心问题)
若基础清理后空间仍未释放,或怀疑有进程占用文件,则需深入排查。这是解决麒麟系统 /tmp 分区占满的关键步骤。
第一步,执行命令 lsof /tmp | awk '$5 ~ /REG/ && $9 ~ /deleted/ {print $2, $9}' | sort -u。该命令可列出所有占用 /tmp 目录下、且状态标记为“deleted”(已删除)的进程ID和文件名。
第二步,根据上一步获取的进程号(PID),使用 lsof -p [PID] 查看进程详细信息,确认其用途,判断是否可以安全终止。
第三步,终止进程。若确认可中断,先尝试友好结束:kill -15 [PID]。若进程无响应,再使用强制终止信号:kill -9 [PID]。
第四步,进程终止后,文件句柄关闭,被占用的空间立即释放。再次运行 df -h /tmp,可看到立竿见影的效果。
三、启用 tmpfs 挂载实现重启自动清空
为避免 /tmp 分区被写满,将其挂载为 tmpfs(内存文件系统)是优选方案。所有数据存放于内存中,系统重启后自动清零,无需手动清理。
操作步骤如下:编辑系统挂载配置文件 sudo nano /etc/fstab。
在文件末尾添加一行:tmpfs /tmp tmpfs defaults,size=2G,mode=1777 0 0。size 参数可根据物理内存大小灵活调整。
接着,应用新的挂载配置:sudo umount /tmp && sudo mount /tmp。
最后,用 mount | grep /tmp 命令验证,若输出包含“tmpfs”字样,则挂载成功。
四、配置 systemd-tmpfiles 实施周期性轮转清理
若不依赖重启清理,又希望实现自动化管理,systemd 自带的 tmpfiles 工具可满足需求。它能按规则(如文件访问时间)自动清理旧文件。
首先,检查系统现有配置:ls /usr/lib/tmpfiles.d/*.conf | grep -i tmp。
接着,创建自定义规则文件:sudo tee /etc/tmpfiles.d/kylin-tmp.conf。
写入规则内容:v /tmp 1777 root root 7d。该规则表示保留 /tmp 目录下7天内被访问过的文件,超时自动删除。
规则创建后,可手动触发一次清理测试效果:sudo systemd-tmpfiles --clean。此后,systemd 会定期自动执行此任务。
五、迁移大体积临时数据至其他分区
有时,/tmp 目录下特定应用生成的子目录(如 /tmp/zysoft_cache)体积巨大且不能随意删除,会对根分区造成持续压力。此时,绑定挂载(bind mount)是理想解决方案,可将这些“大户”迁移至空间充裕的其他分区。
第一步,在目标分区(如 /home)创建新目录:sudo mkdir -p /home/tmp_offload。
第二步,迁移数据并清空原目录:sudo rsync -a v /tmp/zysoft_cache/ /home/tmp_offload/ && sudo rm -rf /tmp/zysoft_cache。
第三步,建立绑定挂载,使访问原路径实际指向新位置:sudo mount --bind /home/tmp_offload /tmp/zysoft_cache。
第四步,为确保重启后有效,将挂载项写入配置文件:echo '/home/tmp_offload /tmp/zysoft_cache none bind 0 0' | sudo tee -a /etc/fstab。
总结而言,面对麒麟系统 /tmp 分区占满问题,从基础强制清理、核心进程句柄释放,到治本的 tmpfs 挂载、自动化轮转及数据迁移,这套组合方案可覆盖绝大多数场景。用户可根据具体需求和系统环境,选择最适合的处理方式。
