根目录写满"/usr/local/bin/*.sh"文件写入报错E514: write error (file system full?)
盘满写入错误
是 Vim(或其他编辑器)在保存文件时提示:写入失败,可能是文件系统满了。
#查看/使用率
df -h
/ 或 /usr 显示 100%,那就证实是“盘满”。
应急解决办法
# 查看/var/log日志文件夹大小
sudo du -sh /var/log/
#一刀清理
sudo truncate -s 0 /var/log/syslog
sudo truncate -s 0 /var/log/messages
sudo journalctl --vacuum-time=3d # 仅保留近3天日志
# 删除临时缓存文件
sudo rm -rf /var/cache/*
sudo rm -rf /tmp/*
# 查找占用空间最大目录
sudo du -ahx / | sort -rh | head -20
# 列出 / 根目录下的文件(非文件夹)
ls -lh / | grep -v "^d"
其他清理
清理 apt 或 opkg 缓存(取决于系统)
sudo apt clean # Debian/Ubuntu
sudo opkg clean # QNAP 常见
docker清理
能把不用的镜像、容器、网络和卷全清掉!
docker system prune -af --volumes
找找隐藏的大文件(比如临时下载、crash dump)
sudo find / -type f -size +100M -exec ls -lh {} \;
定期清理日志
vi /usr/local/bin/cleanup_logs.sh
#!/bin/sh
echo "🧼 开始清理日志..."
before=$(du -sh /var/log | awk '{print $1}')
# 清空 .log/.err/.out
find /var/log -type f \( -name "*.log" -o -name "*.err" -o -name "*.out" \) -exec sh -c ': > "$0"' {} \;
# 删除轮换和压缩日志
find /var/log -type f \( -name "*.gz" -o -name "*.1" -o -regex ".*\.[0-9]+" \) -exec rm -f {} \;
after=$(du -sh /var/log | awk '{print $1}')
echo "✅ 清理完成:"
echo " 清理前:$before"
echo " 清理后:$after"
# 赋予执行权限
chmod +x /usr/local/bin/cleanup_logs.sh
# QNAP编辑crontab文件
vi /etc/config/crontab
# 每周三(Wednesday)凌晨 3 点执行脚本
0 3 * * 3 /usr/local/bin/cleanup_logs.sh >/dev/null 2>&1
威联通根分区释放方案:挂载共享空间释放根目录
适用场景
根目录爆满(/ 只有几百 MB)
想快速释放空间,不想重装系统
能访问 QNAP 的终端(SSH 登录)
QNAP 默认数据存储位置通常是 /share/CACHEDEV1_DATA/,你可以这样确认:
df -h
查看/使用以及/share/CACHEDEV1_DATA空间是否充足。
查看根目录下哪些文件夹
for dir in /*; do
mountpoint -q "$dir" && echo "$dir is a mount point" || echo "$dir is using rootfs"
done
哪些目录可以迁移出来,哪些目录只是挂载点(不占用根空间)
找出真正在占空间的子目录
# 只统计根分区自身使用的目录空间,不包含其他挂载上来的子分区
du -h --max-depth=1 --one-file-system / 2>/dev/null | sort -hr
#QNAP 固件/日志/配置重灾区
du -h --max-depth=1 /mnt/HDA_ROOT
#日志或服务文件删除了但仍被进程占用,导致空间没释放
lsof | grep deleted | grep -E '/(mnt|var|opt|tmp|usr|log)'
mkdir -p /share/CACHEDEV1_DATA/opt # 创建目标目录
cp -a /opt/* /share/CACHEDEV1_DATA/opt/ # 拷贝内容
mv /opt /opt.bak # 备份原目录
ln -s /share/CACHEDEV1_DATA/opt /opt # 创建软链接
QNAP检测根目录可迁移目录check_movable_dirs.sh
#!/bin/sh
echo "=== 根目录空间使用情况 ==="
du -h --max-depth=1 --one-file-system / 2>/dev/null | sort -hr
echo "\n=== 建议迁移的目录(>20M) ==="
check_movable() {
path="$1"
size=$(du -sm "$path" 2>/dev/null | awk '{print $1}')
if [ "$size" -gt 20 ]; then
case "$path" in
/home|/usr/local|/var/log|/var/tmp|/var/cache|/opt|/root)
echo "[✔] $path - ${size}MB ✅ 推荐迁移"
;;
/lib*|/etc|/bin|/sbin|/dev|/proc|/sys|/tmp)
echo "[✘] $path - ${size}MB ❌ 系统目录,建议保留"
;;
*)
echo "[?] $path - ${size}MB 🤔 请手动判断"
;;
esac
fi
}
# 扫描一级目录
for dir in /*; do
[ -d "$dir" ] || continue
mountpoint -q "$dir" && continue # 跳过挂载点
check_movable "$dir"
done
如果这篇文章对你有用,可以关注本人微信公众号获取更多ヽ(^ω^)ノ ~
