Linux
学习Linux命令行:'The Linux Command Line' 是经典教材 #生活技巧# #工作学习技巧# #编程学习资源#
当 Linux 服务器出现 “no space left on device” 错误时,意味着磁盘空间已满,需要采取一些措施来清理磁盘,可以根据下面步骤依次清理:
1. 检查磁盘使用情况首先,使用 df 和 du 命令检查磁盘使用情况,找出哪些目录占用了大量空间。
可以通过如下命令来查询
df -h 1
举例:
====================================== 查看磁盘使用情况,明显看到这个路径下磁盘使用100% /data1/server/server/officeauto/logs ====================================== [root ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 16G 0 16G 0% /dev tmpfs 16G 4.0K 16G 1% /dev/shm tmpfs 16G 1.7G 14G 11% /run tmpfs 16G 0 16G 0% /sys/fs/cgroup /dev/mapper/centos-root 50G 5.4G 45G 11% / /dev/sdb1 500G 167G 334G 34% /home /dev/sda1 1014M 152M 863M 15% /boot 10.5.122.99:/data1/server/server/officeauto/logs 500G 495G 4G 100% /var/lib/kubelet/pods/99739912-b5d4-4bda-bc68-e3ca590fbad2/volumes/kubernetes.io~nfs/officeauto-logs ...... 123456789101112131415
PS:直接进入该路径进行文件清理,该案例的文件是日志文件,可直接清理
/data1/server/server/officeauto/logs
使用 du -sh 命令查找占用大量空间的文件和目录。可以通过路径不断深入来查询,最终定位到可删除的文件:
du -sh /* 2>/dev/null 1
举例:
====================================== 这个命令会显示根目录下每个子目录的大小。你可以递归地检查子目录,找到占用空间最多的文件和目录。 ====================================== [root@test01 ~]# du -sh /* 2>/dev/null 0 /bin 120M /boot 119M /data 0 /data1 4.0K /dev 41M /etc 177G /home 0 /lib ====================================== 可以看出路径/home占用比较大,可以继续深入排查 ====================================== [root@test01 ~]# du -sh /home/* 2>/dev/null 40K /home/apps 21G /home/apps_bak 135G /home/data1 22G /home/docker 60K /home/everhomes ....
12345678910111213141516171819202122 3. 清理 Docker 数据Docker 的 overlay 文件系统也占用了大量空间。你可以清理未使用的 Docker 镜像、容器和卷。
(1)删除未使用的 Docker 镜像docker image prune -a 1 (2)删除未使用的 Docker 容器
docker container prune 1 (3)删除未使用的 Docker 卷
docker volume prune 1 4. 清理 Kubernetes 日志和缓存
Kubernetes 的日志和缓存文件也可能占用大量空间。你可以清理这些文件。
(1)清理 Kubernetes 日志====================================== 生产环境慎操作,可以根据实际情况增加限定范围,如 "*.log"改为"2023-*.log"来限定只删除23年日志 ====================================== find /var/log/containers/ -type f -name "*.log" -delete 12345 (2)清理 Kubernetes 缓存
rm -rf /var/lib/kubelet/pods/*/volumes/kubernetes.io~empty-dir/* 1 5. 清理非重要文件
====================================== 1.清理临时文件(慎操作) ====================================== rm -rf ~/tmp/* 1234
====================================== 2.清理下载文件(慎操作) ====================================== rm -rf ~/Downloads/* 1234
====================================== 3.压缩文件后进行删除 ====================================== sudo gzip /var/log/*.log rm -rf /var/log/*.log 12345 6.终极篇
可以整理一个cleanup.sh文件,后续直接执行sh cleanup.sh一步执行清理释放磁盘
#!/bin/bash # 清理旧的日志文件 LOG_DIR="/data1/server/server/registry/logs" find $LOG_DIR -type f -name "*.log" -mtime +30 -exec rm -f {} \; # 清理 Docker 数据 docker image prune -a -f docker container prune -f docker volume prune -f # 清理 Kubernetes 日志和缓存 find /var/log/containers/ -type f -name "*.log" -delete rm -rf /var/lib/kubelet/pods/*/volumes/kubernetes.io~empty-dir/* # 清理临时文件 rm -rf /tmp/* # 清理用户缓存 rm -rf /root/.cache/* # 检查磁盘空间 df -h
1234567891011121314151617181920212223将以上脚本保存为 cleanup.sh,赋予执行权限并运行:
chmod +x cleanup.sh ./cleanup.sh 12
通过这些步骤可以释放一些磁盘空间,操作过程需要慎重,必要情况下可以先做压缩、备份处理!
——编辑者:梦想的边缘
网址:Linux https://www.yuejiaxmz.com/news/view/345793
相关内容
Linux自动化任务Linux ===> 实用的8个LINUX命令行监测工具
Linux学习进阶路线图
从开发者角度入门Linux世界资料整理=Linux介绍+Ubuntu系统安装(视频+文字)
Linux智能家庭自动化资源
【Linux自动化任务构建】
如何在Linux上自动化任务
轻松学习Linux之自动执行任务
Linux应急响应技巧整理
废旧Android手机如何改造成Linux服务器