目录
linux服务器的日志、容器清理

这是一份Linux服务器磁盘清理与排查手册,用于安全清理磁盘空间。

全盘评估磁盘状态

在清理之前,先了解磁盘被哪些占用了?

查看磁盘整体情况

shell
复制代码
df -h
  • 作用:显示文件系统的磁盘空间使用情况
  • 参数:
    • -h 以人类一的的格式显示大小,比如K,M,G,不是显示默认的字节数。
  • 关注点:重点关注挂载点为/或/var的物理磁盘,比如/var/vda2,忽略tmpfs,这个是内存盘,重启服务即清空,不是真实的磁盘

示例:

shell
复制代码
root@dell3050:~# df -h
Filesystem                                               Size  Used Avail Use% Mounted on
udev                                                     1.8G     0  1.8G   0% /dev
tmpfs                                                    381M   40M  342M  11% /run
efivarfs                                                 256K   42K  210K  17% /sys/firmware/efi/efivars
/dev/nvme0n1p2                                            63G   19G   41G  32% /
tmpfs                                                    1.9G  1.4M  1.9G   1% /dev/shm
tmpfs                                                    5.0M     0  5.0M   0% /run/lock
/dev/nvme0n1p1                                            93M  8.1M   85M   9% /boot/efi
trimafs                                                  1.2T  804G  321G  72% /fs
/dev/mapper/trim_caf1374c_2bc8_4b03_ad44_89a35b7d3e0d-0  954G  674G  279G  71% /vol2
/dev/mapper/trim_4d2b7360_aa9b_4ee0_908a_f970ab31c057-0  175G  131G   42G  76% /vol1
overlay                                                  175G  131G   42G  76% /vol1/docker/overlay2/61737b016a11b7ca04f068e7b07cb73ae1f68208cad7381b9b7732d820440882/merged
overlay                                                  175G  131G   42G  76% /vol1/docker/overlay2/331192769b63e9e1f4131ef0e499b0f041784ac51e85d8b4953072232b9d8bc4/merged
overlay                                                  175G  131G   42G  76% /vol1/docker/overlay2/6f20333f4fdfae67b0f2cc777535d346acdaf55f262980c00aa1397d21003535/merged
overlay                                                  175G  131G   42G  76% /vol1/docker/overlay2/76441a4699c154727e186965bbf8fa4c09d7b1d79d8f9754195d823619d911c8/merged
overlay                                                  175G  131G   42G  76% /vol1/docker/overlay2/4457eecad84dd0382154e1f96f90658e63993b52f633c24ba05bcc6464a224db/merged
overlay                                                  175G  131G   42G  76% /vol1/docker/overlay2/108863ba2ab37ce8ac72d5beaf3cb6e4819ba367f859a8669b30a242d7798a9e/merged
overlay                                                  175G  131G   42G  76% /vol1/docker/overlay2/8098d04956d032bac795afa5c78e6dcf13e489b046d0c53b75b0b07abdd96617/merged
overlay                                                  175G  131G   42G  76% /vol1/docker/overlay2/c025395cf30a3acf236c38c03e786d52efea95e2e5f109ca6ccd2cf3185b1530/merged
overlay                                                  175G  131G   42G  76% /vol1/docker/overlay2/5ed79c3840c1863bfd6b45ced7cab5b60e5329d345c66d830ae92d646408c3b5/merged
tmpfs                                                    381M     0  381M   0% /run/user/1000
root@dell3050:~# 

比如示例中展示的:

  • /dev/nvme0n1p2:是我的系统盘。这里有63G(分配时64G,计算机是按照1024算的,显示是按照1000算的,存在误差很正常),已使用19G,还有41G可用。
  • /dev/mapper/:这个是我的数据盘。
  • 往后挂在的overlay是docker容器中部署的服务磁盘占用。因为部署的位置是/dev/mapper/trim_4d2b7360_aa9b_4ee0_908a_f970ab31c057-0相同,所以显示的大小、占用是相同的。

由上面可以看到docker服务占用的比例不少,那么就可以排查一下docker的占用情况

docker磁盘使用概览

shell
复制代码
docker system df 
  • 作用:显示docker守护进程使用的磁盘空间量,比如镜像image、容器container、数据卷volume等等
  • 重点关注:reclaimable(可回收)。

示例:

shell
复制代码
root@dell3050:~# docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          32        11        16.8GB    9.64GB (57%)
Containers      11        9         1.049GB   1.047GB (99%)
Local Volumes   21        1         140.6MB   140.6MB (100%)
Build Cache     139       0         4.163GB   3.159GB
root@dell3050:~# 

在示例中,可以看到:

  • 镜像有11个,
  • 运行的镜像有9个
  • 等等。

我们可以清理掉没有用到的镜像。

磁盘清理

查看哪些容器没有在用的

shell
复制代码
docker images

查看容器的镜像

示例

shell
复制代码
root@dell3050:~# docker images
                                                                                                                                           i Info →   U  In Use
IMAGE                                                                                         ID             DISK USAGE   CONTENT SIZE   EXTRA
crpi-nx87cj17hfwzxq8x.cn-hongkong.personal.cr.aliyuncs.com/missying/missying-music:1.0.0      3d21b052a340        706MB             0B    U   
crpi-nx87cj17hfwzxq8x.cn-hongkong.personal.cr.aliyuncs.com/missying/missying-music:2610091    3d21b052a340        706MB             0B    U   
crpi-nx87cj17hfwzxq8x.cn-hongkong.personal.cr.aliyuncs.com/missying/missying-todo-web:1.0.0   97874a75c149       49.9MB             0B    U   
crpi-nx87cj17hfwzxq8x.cn-hongkong.personal.cr.aliyuncs.com/missying/missying-todo:1.0.0       ba78447586c1        306MB             0B    U   
docker.1ms.run/nacos/nacos-server:v2.3.2                                                      d3063c1db2bb        820MB             0B      
docker.1ms.run/onlyoffice/documentserver:9.4.0.1                                              4934c364adcc       2.89GB             0B    U   
dongpo:031002                                                                                 60d2c53f9977        275MB             0B      
hanxi/xiaomusic:v0.6.1                                                                        3a8d0613b60f        372MB             0B    U   
minio/minio:RELEASE.2025-04-08T15-41-24Z                                                      9a5b995451f9        183MB             0B    U   
minio/minio:RELEASE.2025-07-23T15-54-02Z                                                      a98a9d647e70        175MB             0B      
missying-music:1.0.0                                                                          3d21b052a340        706MB             0B    U   
missying-music:2610091                                                                        3d21b052a340        706MB             0B    U   
missying-todo-web:1.0.0                                                                       97874a75c149       49.9MB             0B    U   
missying-todo:1.0.0                                                                           ba78447586c1        306MB             0B    U   
mysql:8.4.7                                                                                   67471052edd5        788MB             0B    U   
nginx:latest                                                                                  ad5708199ec7        192MB             0B      
penpotapp/backend:latest                                                                      444bea4e7476        835MB             0B      
penpotapp/exporter:latest                                                                     7e0976d0cb4c       1.97GB             0B      
penpotapp/frontend:latest                                                                     ecce9569ad8f        930MB             0B      
phpmyadmin:5.2.3                                                                              4e376b5c166f        575MB             0B      
postgres:15                                                                                   b12bf22fb38a        444MB             0B      
postgres:15-alpine                                                                            06686173a6eb        274MB             0B      
redis:6-alpine                                                                                b7f611844a19       30.2MB             0B      
redis:8.4.0                                                                                   1c390e3bb5cb        139MB             0B    U   
registry.cn-guangzhou.aliyuncs.com/fnapp/trim-chromium:latest                                 d01bc5fffc8d       2.77GB             0B    U   
registry.cn-guangzhou.aliyuncs.com/lc-repository/dongpo:031101                                3bb061db3e24        275MB             0B      
registry.cn-guangzhou.aliyuncs.com/lc-repository/dongpo:031102                                60d2c53f9977        275MB             0B      
semitechnologies/weaviate:1.19.0                                                              8ec9f084ab23       52.5MB             0B      
sj26/mailcatcher:latest                                                                       750c37a402e6        129MB             0B      
snowdreamtech/frpc:0.69.1                                                                     4d90b520a382        128MB             0B    U   
snowdreamtech/frps:0.67.0                                                                     8a809860f1df       52.3MB             0B      
tanner23456/playlistdl:v2                                                                     8fe1105dc58c        426MB             0B    U   
ubuntu/squid:latest                                                                           feec1ad0ab0a        213MB             0B      
valkey/valkey:8.1                                                                             0ad4f667c7ea        111MB             0B      
root@dell3050:~# 

可以看到,最后的一列,带U的表示正在使用的,不带U的就是未使用的。

如果你有些镜像想保留,删掉不想要的,那么可以通过以下的命令删除不想要的镜像。

shell
复制代码
# 方式一:rmi后买你接镜像名:版本号
docker rmi valkey/valkey:8.1 


# 方式二: rmi接id
docker rmi 0ad4f667c7ea

通过上面的方式就可以删除一个不想留的镜像了,如果有多个不想要的,在后面补充,以空格分离。

如果不再使用的镜像不想留了,那么可以通过以下命令清除所有未在使用的镜像

shell
复制代码
docker system prune -a
  • 作用:移除所有未使用的docker镜像。
  • 参数:
    • -a:不仅删除<none>的镜像,还会删除没有被使用的镜像。<none>的镜像,一般是打包镜像不成功出现的。

清理了大概15G的空间

shell
复制代码
Total reclaimed space: 15.18GB

root@dell3050:~# docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          9         9         5.221GB   5.221GB (100%)
Containers      9         9         1.184MB   0B (0%)
Local Volumes   21        0         140.6MB   140.6MB (100%)
Build Cache     0         0         0B        0B
root@dell3050:~# 

容器日志也是占用磁盘的一大杀手

查看磁盘日志情况

shell
复制代码
find /var/lib/docker/containers/ -name "*-json.log" -exec ls -lh {} \; | awk '{ print $9 ": " $5 }' | sort -k2 -hr
  • 作用:找出指定目录下的日志,并显示。

  • 参数

    • /var/lib/docker/containers/ :这个是指定的目录。
    • -name :按照名字去查。
    • "*-json.log":以-json.log结尾的文件。
    • -exec:表示要执行下一步的命令。
    • ls -lh {} :列表展示详细信息。
    • \;:表示exec命令的结束
    • |:管道符号
    • awk '{ print $9 ": " $5 }':文本处理工具,提取 ls -lh 输出的第 9 列(文件名)和第 5 列(文件大小),格式化为 文件名: 大小。
    • sort -k2 -hr:-k2 表示按第 2 列(即文件大小列)进行排序,-hr 表示按人类可读格式逆序(从大到小)排列。

⚠️找到后千万不要直接rm删除。

容器在运行中,仍然使用着这个文件,如果贸然删除,导致容器找不到这个文件,从而报错。所以要做的,是清理里面的内容,而不是文件。

shell
复制代码
truncate -s 0 /var/lib/docker/containers/<容器ID>/<容器ID>-json.log
# 或者
echo "" > /var/lib/docker/containers/<容器ID>/<容器ID>-json.log
  • trancate:用于缩小或者扩展文件的大小,-s设置大小的,设置为0,则截断文件大小为0字节。

除了容器的日志,还有系统的日志文件

shell
复制代码
find /var/log -type f -size +1M -exec ls -lh {} \; | awk '{ print $9 ": " $5 }' | sort -k2 -hr

查看系统日志,与容器日志的查找是相同的,只是目录为/var/log。

示例:

shell
复制代码
root@dell3050:~# sudo find /var/log -type f -size +1M -exec ls -lh {} \; | awk '{ print $9 ": " $5 }' | sort -k2 -hr
/var/log/trim_app_center/info.log: 76M
/var/log/syslog.1: 51M
/var/log/kern.log.1: 51M
/var/log/trim_app_center/error.log: 36M
/var/log/trim-connect/error.log: 35M
/var/log/trim-connect/pxy.info.log: 18M
/var/log/wtmp.1: 13M
/var/log/samba/log.rpcd_lsad: 11M
/var/log/accountsrv/info.log: 11M
/var/log/kern.log: 9.8M
/var/log/auth.log: 8.8M
/var/log/syslog: 7.2M
/var/log/kern.log.4.gz: 6.0M
/var/log/kern.log.3.gz: 5.9M
/var/log/kern.log.2.gz: 5.9M
/var/log/samba/log.samba-dcerpcd: 5.2M
/var/log/syslog.5.gz: 4.8M
/var/log/syslog.4.gz: 4.8M
/var/log/syslog.3.gz: 4.8M
/var/log/syslog.7.gz: 4.7M
/var/log/cron.log: 4.5M
/var/log/syslog.6.gz: 3.9M
/var/log/syslog.2.gz: 3.6M
/var/log/updatemgr/error.log: 1.9M
/var/log/updatemgr/info.log: 1.8M
root@dell3050:~# 

清楚系统历史日志

shell
复制代码
# 仅保留最近 3 天的日志
journalctl --vacuum-time=3d

# 或者:限制所有归档日志总大小不超过 500MB
journalctl --vacuum-size=500M
  • 作用:安全清理系统级日志,防止 /var/log/journal 目录无限膨胀。
  • 参数解析:
    • --vacuum-time:删除早于指定时间(如 3d 表示 3 天,1months 表示 1 个月)的日志。
    • --vacuum-size:删除最旧的日志,直到总占用空间低于指定大小。
本文由 Archer 原创发布于 阳光沙滩 , 未经作者授权,禁止转载
评论
0 / 1024
推荐文章
linux服务器的日志、容器清理
本手册提供了一套全面的Linux服务器磁盘清理与排查方法,帮助用户高效管理磁盘空间。通过查看磁盘使用情况、分析Docker占用、清理无用容器和日志,确保系统运行流畅。适合需要优化服务器性能的运维人员参考。
记给网站接入图形验证码
本文分享了如何为个人站点添加图形验证码以提升安全性,详细介绍了使用第三方接口实现验证码功能的过程,并通过代码示例展示了具体实现方式。对于关注网站安全的开发者来说,这篇文章提供了实用的参考价值。
Java开发环境搭建
本文是一份详细的Java开发环境搭建指南,涵盖了Java的发展历史、版本选择及安装配置过程。无论你是初学者还是有经验的开发者,都能从中找到实用的信息和步骤,帮助你快速上手Java开发。
Vue3.js项目的创建
本文详细介绍了如何使用Vue3创建项目,包括Node.js的安装和配置,以及项目的初始化过程。适合初学者学习如何快速搭建Vue3开发环境,并推荐了相关课程供进一步学习。
Network Tools : 您的运维“助手”升级了
Network Tools是一款专为解决运维难题而设计的软件,集设备管理、配置备份、性能监控和告警处理于一体。通过统一的工作台,帮助运维人员更高效地管理资产、定位故障并提升团队协作效率。无论是设备在线状态还是具体问题排查,都能得到全面支持。
Ubuntu 软件安装与彻底卸载指南
本文详细介绍了在 Ubuntu 系统中如何规范安装和彻底卸载 .deb 格式软件,包括依赖修复、残留清理以及图形化工具推荐,适合需要维护系统环境的用户。
JavaWeb开发客户程序更新特殊环境下的骚操作
本文分享了在无外网环境下,如何利用Docker和docker-compose实现高效部署的实战经验。通过基础镜像和本地jar包挂载的方式,解决了内网环境下的依赖问题,适合需要灵活部署方案的技术人员参考。
Linux 防火墙完全指南:从原理到多发行版实战
本文全面解析Linux防火墙的底层原理与主流工具配置,涵盖UFW、firewalld、iptables、nftables等方案,适合不同发行版用户。从基础概念到生产环境加固建议,助你掌握核心安全策略,确保服务器与网络的安全运行。
水上派对英语单词篇
探索FLOATOPIA水上派对的完整指南,涵盖签到流程、场地指引、安全须知、活动安排及夜场舞会等实用英语词汇与对话。无论是初学者还是老手,都能轻松掌握关键术语,享受完美水上体验。
麒麟操作系统下使用 virt-customize 重置虚拟机 root 密码实战
本文详细介绍了在麒麟操作系统环境下使用 virt-customize 工具重置 KVM 虚拟机 root 密码的完整流程,包含安装步骤、常见问题及解决方案,帮助运维人员高效处理密码遗忘或批量初始化场景,避免数据丢失。
浅析JS预编译-函数篇
本文详细讲解了JavaScript中函数的预编译过程,包括AO对象的创建、变量和函数声明的提升,以及执行阶段的变化。适合初学者了解JS执行机制,帮助深入理解代码运行逻辑。
访问Github的另一种姿势
本文介绍了如何通过Watt ToolKit等工具加速访问Github,适合对网络技术感兴趣的读者。内容涵盖工具介绍、下载和使用方法,以及一些实用技巧,值得一看。
使用Gulp压缩JS
本文详细介绍了如何使用Gulp压缩JavaScript文件,特别是支持ES6语法的处理方法。通过实际操作和效果对比,帮助开发者提升代码性能,适合对前端自动化工具感兴趣的读者。
使用Gulp压缩CSS
本文详细介绍了如何使用Gulp工具对CSS文件进行压缩,提升网页加载速度。适合需要优化静态资源的开发者,提供清晰的步骤和示例,帮助快速上手。
从0部署Nuxtjs项目
本文详细介绍了如何将Nuxt.js项目部署到公网,涵盖Node.js安装、环境配置、源码上传及使用PM2启动服务的全过程,适合开发者学习和实践。
Linux 命令行美化利器:tree 命令完全指南(安装 + 全部参数详解)
掌握 Linux 下的 `tree` 命令,快速直观地查看目录结构。本文详细讲解安装方法、参数含义及实战场景,适合开发者和系统管理员提升工作效率。
Linux常用命令(一)
本文详细介绍了Linux基础命令,包括文件操作、系统显示、网络状态、软件包管理等,适合初学者学习和查阅,是掌握Linux系统的实用指南。
大模型推理参数解码:温度、Top-p 与核采样如何塑造生成文本的灵魂
探索大语言模型的采样参数如何塑造生成内容,从温度到Top-p,从惩罚机制到熵控制,揭示背后的信息论原理与实践策略。了解如何通过参数调优,让AI既保持知识的严谨,又拥有创造力的自由。
记从0使用Claude code写代码
本文介绍了如何使用Claude Code搭配DeepSeek进行编程,详细讲解了安装Node.js、全局安装Claude、配置模型以及使用方法。对于开发者来说,这是一份实用的技术教程,尤其适合对AI编程工具感兴趣的读者。
Android-Studio-Gradle同步失败-Library为null的通用排查指南
遇到 Android Studio Gradle Sync 失败时,不要轻易删除全局缓存。本文详细解析了错误原因,并提供了一系列精准的排查步骤和解决方案,帮助开发者快速定位并解决问题,提升开发效率。
PHP实现密码加密
本文详细介绍了Bcrypt密码加密技术及其在PHP中的应用,帮助开发者提升用户密码的安全性。通过实际代码示例,展示了如何使用password_hash和password_verify函数进行密码加密与验证,是学习网络安全知识的实用指南。
WordCloud效果,滚动标签
本文详细介绍了如何在Vue项目中集成WordCloud组件,包括依赖安装、属性配置和使用方法。适合开发者学习如何实现数据可视化功能,提升项目交互体验。
从0使用WordPress搭建一个优美的网站
本文详细介绍了如何使用WordPress搭建一个美观的网站,从安装到主题配置和功能拓展,为读者提供了实用的操作指南。无论是初学者还是有一定经验的开发者,都能从中获得有价值的参考。
JS实现在网站底部添加运行时间
想知道如何在网站底部显示运行时间?本文详细讲解了通过JavaScript实现这一功能的方法,包括时间计算逻辑和代码实现。适合前端开发者学习参考,轻松为网站添加实用功能。
在Vercel上部署Hexo博客
本文详细介绍了如何在Vercel上快速部署Hexo博客,无需后端服务即可实现高效发布。相比传统方式,省去了手动生成和上传静态文件的步骤,更加便捷。适合想要搭建个人博客的开发者参考。
从0搭建一个Hexo博客
本文详细介绍了Hexo博客框架的使用方法,从安装到部署全流程讲解,适合想快速搭建个人博客的技术爱好者。内容清晰易懂,是入门Hexo的理想指南。
离线设备激活方案:古老的 Windows 光盘激活,离线算法授权等
本文深入解析了离线激活的核心原理与实现方式,从历史案例到现代技术,全面剖析了如何在无网络环境下确保软件授权的安全性。通过设备指纹、授权文件校验等手段,为开发者提供了可复用的架构设计思路,适用于工业、医疗等对网络依赖较低的场景。
Hexo实现生成站点地图
想为你的Hexo博客添加站点地图功能吗?本文详细介绍了如何通过安装插件和配置文件来实现,适合没有内置该功能的新主题或自定义主题的用户。简单步骤助你提升搜索引擎优化效果。
Hexo实现代码压缩
本文分享了如何通过Hexo插件优化博客性能,详细介绍了安装和配置过程,帮助提升网页加载速度。适合对网站优化感兴趣的开发者阅读。
记一次 GitHub 幽灵协作者大清洗:强制重写 Git 历史与穿透 CDN 缓存实践
本文详细讲解了如何解决GitHub上出现的‘幽灵协作者’问题,通过重写Git历史和穿透CDN缓存,彻底清理错误提交记录。适合开发者学习如何高效管理项目历史与优化仓库信息。