当前位置: 首页 > article >正文

Python日志把磁盘写爆了?一个真实案例教你用logrotate和find命令优雅管理日志文件

Python日志管理实战如何用logrotate和find命令避免磁盘爆满1. 从真实案例看日志管理的痛点那天凌晨三点监控系统突然报警——生产环境的核心服务全部宕机。紧急登录服务器排查发现磁盘空间被日志文件占满Python应用抛出OSError: [Errno 28] No space left on device错误。查看日志目录竟然堆积了超过8万个日志文件每个虽然只有2MB但总量早已超过磁盘容量。这个看似简单的存储问题背后暴露的是日志管理策略的系统性缺失。典型问题场景日志文件数量失控如案例中的86400个上限单文件大小无节制增长缺乏自动轮转和清理机制未考虑inodes限制等系统级因素# 查看磁盘空间和inodes使用情况 df -h # 磁盘空间 df -i # inodes数量提示inodes用尽和磁盘空间耗尽都会导致No space left错误但解决方案完全不同2. 系统级解决方案logrotate深度配置2.1 logrotate核心机制解析logrotate是Linux系统自带的日志管理工具通过cron定期执行提供以下核心功能轮转(rotate)重命名旧日志创建新文件压缩(compress)使用gzip等压缩历史日志清理(prune)按时间或数量删除旧日志触发信号通知应用重新打开日志文件典型配置参数对比参数作用示例值注意事项daily按天轮转daily可与size组合使用size按大小轮转100M优先级高于时间周期rotate保留数量30指未压缩的文件数compress启用压缩compress默认用gzipdelaycompress延迟压缩delaycompress对当前日志不压缩missingok允许文件缺失missingok避免报错中断notifempty空文件不轮转notifempty节省资源sharedscripts共享脚本sharedscripts所有日志处理完才执行postrotate2.2 Python应用专用配置示例在/etc/logrotate.d/下创建专属配置如my_python_app/u01/app/logs/*.log { daily rotate 30 compress delaycompress missingok notifempty copytruncate dateext dateformat -%Y%m%d postrotate # 通知Python应用重新打开日志如使用logging.handlers.WatchedFileHandler pkill -USR1 python3 2/dev/null || true endscript }关键技巧copytruncate复制后清空原文件避免需要应用配合重开日志dateext使用日期作为轮转后缀便于排查USR1信号优雅通知Python重载日志文件# Python端需要配合的代码使用WatchedFileHandler import logging from logging.handlers import WatchedFileHandler handler WatchedFileHandler(/u01/app/logs/app.log) logging.basicConfig(handlers[handler])3. 灵活方案find命令组合拳3.1 基础清理命令剖析当需要更灵活的清理策略时find命令是不二之选# 删除30天前的.log文件按修改时间 find /u01/app/logs -name *.log -mtime 30 -delete # 限制总文件数量保留最新的100个 find /u01/app/logs -name *.log -printf %T %p\n | sort -n | head -n -100 | cut -d -f2- | xargs rm -ffind常用参数精解参数作用典型用例-mtime按修改时间筛选-mtime 77天前-size按文件大小筛选-size 10M大于10MB-exec执行命令-exec rm {} ;-delete直接删除比-exec rm更高效-printf自定义输出格式配合排序使用3.2 高级组合技巧场景1同时控制文件数量和总大小# 保持目录下日志不超过10GB while [ $(du -s /u01/app/logs | cut -f1) -gt $((10*1024*1024)) ]; do oldest$(find /u01/app/logs -name *.log -printf %T %p\n | sort -n | head -1 | cut -d -f2-) rm -f $oldest done场景2按inodes使用率自动清理# 当inodes使用率90%时清理最早日志 inode_usage$(df -i /u01 | awk NR2 {print $5} | tr -d %) [ $inode_usage -gt 90 ] \ find /u01/app/logs -name *.log -printf %T %p\n | sort -n | head -n 50 | cut -d -f2- | xargs rm -f4. 生产环境最佳实践4.1 多维度防御策略分层存储热日志保留7天本地SSD存储温日志保留30天机械硬盘或NAS冷日志保留1年对象存储如S3监控预警# 监控脚本示例 check_space() { local threshold90 local usage$(df -h /u01 | awk NR2 {print $5} | tr -d %) [ $usage -ge $threshold ] \ alert 磁盘空间使用率${usage}%超过阈值${threshold}% local inode_usage$(df -i /u01 | awk NR2 {print $5} | tr -d %) [ $inode_usage -ge $threshold ] \ alert inodes使用率${inode_usage}%超过阈值${threshold}% }日志分级DEBUG/INFO短期保留1-7天WARNING/ERROR长期保留30-90天CRITICAL永久存档4.2 Python日志配置优化建议import logging from logging.handlers import RotatingFileHandler # 按大小轮转推荐配合logrotate使用 handler RotatingFileHandler( app.log, maxBytes50*1024*1024, # 50MB backupCount10 # 保留10个历史文件 ) # 更高级的TimedRotatingFileHandler from logging.handlers import TimedRotatingFileHandler handler TimedRotatingFileHandler( app.log, whenmidnight, # 每天轮转 interval1, backupCount30 )关键决策点方案适用场景优点缺点logrotate系统级管理功能全面与系统集成需要root权限Python内置Handler应用级控制无需外部依赖功能有限find命令特殊清理需求灵活性强需自行实现轮转

相关文章:

Python日志把磁盘写爆了?一个真实案例教你用logrotate和find命令优雅管理日志文件

Python日志管理实战:如何用logrotate和find命令避免磁盘爆满 1. 从真实案例看日志管理的痛点 那天凌晨三点,监控系统突然报警——生产环境的核心服务全部宕机。紧急登录服务器排查,发现磁盘空间被日志文件占满,Python应用抛出OSEr…...

网商银行年营收206亿:净利33亿 万向三农与复星卖老股

雷递网 雷建平 5月3日网商银行日前公布2025年的年报。年报显示,网商银行2025年营收为205.63亿元,较上年同期的213.14亿元下降3.5%。网商银行2025年运营利润为33.22亿元,较上年同期的34亿元下降2.3%;净利为32.93亿元,较…...

终极指南:CyberpunkSaveEditor - 免费开源《赛博朋克2077》存档编辑器完全教程

终极指南:CyberpunkSaveEditor - 免费开源《赛博朋克2077》存档编辑器完全教程 【免费下载链接】CyberpunkSaveEditor A tool to edit Cyberpunk 2077 sav.dat files 项目地址: https://gitcode.com/gh_mirrors/cy/CyberpunkSaveEditor 想要完全掌控夜之城的…...

ai赋能开发:在idea社区版中集成快马ai实现智能编程辅助

AI赋能开发:在IDEA社区版中集成快马AI实现智能编程辅助 最近在尝试将AI能力集成到日常开发工具中,发现IDEA社区版结合快马平台的AI模型可以打造一个相当实用的智能编程助手。这个项目原型主要实现了代码质量自动审查、智能补全和自然语言转代码等功能&a…...

UCIe物理层实战:从链路初始化到坏Lane替换,手把手教你理解芯片互连的‘握手’与‘修复’

UCIe物理层实战:从链路初始化到坏Lane替换,手把手教你理解芯片互连的‘握手’与‘修复’ 在Chiplet架构成为半导体行业新宠的今天,UCIe(Universal Chiplet Interconnect Express)作为开放标准正逐步统一异构芯片的互连…...

别再只装不用了!用Docker Compose一键部署Neo4j,并导入你的第一个电影关系图谱

用Docker Compose快速搭建Neo4j并构建电影关系图谱 在数据关系日益复杂的今天,传统关系型数据库在处理多层级关联时常常力不从心。图数据库以其直观的节点-关系模型,成为解决这类问题的利器。Neo4j作为图数据库领域的佼佼者,凭借其强大的Cyph…...

告别localhost!Vite+Vue3项目打包后,直接双击index.html就能运行的保姆级教程

告别localhost!ViteVue3项目打包后直接双击运行的终极指南 每次开发完Vue项目,最尴尬的时刻莫过于把打包好的dist文件夹发给产品经理,对方却打不开index.html。作为前端开发者,我们都经历过这种窘境——明明在开发环境运行得好好的…...

提升直播平台开发效率:用快马AI一键生成fenghud.live核心模块代码

最近在开发一个类似fenghud.live的直播平台项目时,发现很多功能模块其实都有现成的解决方案,但自己从头写不仅耗时还容易踩坑。后来尝试用InsCode(快马)平台的AI生成代码功能,意外发现能快速产出可直接集成的高质量模块代码,效率提…...

用python开发的工具【Excel智能合并工具】:1分钟合并15个文件×多Sheet,经常处理Excel的你注意啦!

🌈 Hi,~小工具继续,领取方法在文末~📌 常处理Excel的小伙伴此工具不要错过啦!🛠️ 前面分享了【照片批量加水印】-【Excel表格自动合并/拆分】-【批量生成二维码】-【Word自动生成】-【PDF信息提取】-【Exc…...

基于强化学习的GPU内核生成技术优化实践

1. GPU内核生成技术概述GPU内核生成是现代高性能计算中的核心技术,它通过优化计算密集型任务的并行执行效率来提升整体性能。与传统的CPU编程不同,GPU编程需要充分利用硬件的并行计算能力,将计算任务分解为多个线程块(Thread Block)和线程网格…...

企业级AI模型安全部署:NVIDIA NIM微服务架构解析

1. 企业级AI模型安全部署的核心挑战 在金融、医疗、政务等高度敏感的行业领域,AI模型部署面临三重矛盾:创新效率与合规要求的矛盾、数据价值与隐私风险的矛盾、技术迭代与系统稳定的矛盾。以某跨国银行为例,其AI团队在测试开源LLM时发现&…...

别再折腾CUDA版本了!手把手教你用Anaconda+Python3.10一键搞定PaddlePaddle-GPU 2.6.0

深度学习环境配置革命:用Anaconda三分钟搞定PaddlePaddle-GPU 每次看到"CUDA版本不兼容"的报错提示,是不是感觉血压瞬间飙升?作为过来人,我完全理解那种在NVIDIA驱动、CUDA、cuDNN版本地狱里反复挣扎的痛苦。但今天我要…...

从SAM文件到NTLM Hash:深入理解Windows 10密码存储机制与安全演进

Windows 10密码存储机制:从SAM文件到NTLM Hash的安全演进 在数字化时代,操作系统安全始终是技术领域的热点话题。作为全球使用最广泛的桌面操作系统,Windows的密码存储机制经历了多次重大变革,每一次升级都反映了安全理念的进步与…...

基于MCP协议构建Gemini研究助手:工具调用与智能体开发实践

1. 项目概述与核心价值 最近在折腾AI智能体(Agent)和工具调用(Tool Calling)相关的东西,发现了一个挺有意思的项目: capyBearista/gemini-researcher-mcp 。简单来说,这是一个为Google的Gemi…...

Windows系统wpnapps.dll文件丢失找不到无法启动程序解决

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…...

实战演练:基于快马平台构建一个可交互的电商导购智能体应用

最近在尝试做一个电商导购智能体的项目,发现用InsCode(快马)平台来实现特别方便。这个智能体不仅能展示商品,还能通过对话理解用户需求,给出个性化推荐。下面分享下我的实现过程和经验。 项目整体设计思路 首先明确核心功能:既要…...

别再手动点测试了!用GitLab Pipeline Schedule给dev分支做个『小时级健康检查』

用GitLab Pipeline Schedule为dev分支打造智能守护系统 凌晨三点,手机突然震动。睡眼惺忪中看到测试群里的告警:"订单服务dev分支构建失败"。这已经是本周第三次被深夜告警吵醒——作为团队技术负责人,我意识到必须改变这种被动响应…...

别再只用Sprite了!用CocosCreator Graphics组件手搓一个可交互的“刮刮乐”与动态数据图表

用CocosCreator Graphics组件打造交互式数据可视化与创意游戏 在移动应用和网页开发中,数据可视化与交互式游戏元素的需求日益增长。传统的Sprite组件虽然简单易用,但在动态生成内容和实现复杂交互时往往力不从心。CocosCreator的Graphics组件为我们打开…...

三步轻松下载B站大会员4K视频

三步轻松下载B站大会员4K视频 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 你是否曾经遇到过这样的困扰:在B站上找到了一…...

【LangGraph】持久化实现的三大能力——时间旅行

【LangGraph】新篇章:LangGraph 持久化的三大应用能力*重点*前言一、什么是时间旅行?二、为什么需要时间旅行?三、核心前提:必须启用 Checkpointer四、时间旅行四步法详解4.1 初始执行工作流:4.2 查看历史检查点&#…...

别再死记硬背了!用‘G谱号’这个核心逻辑,5分钟搞懂高音谱号与钢琴键位对应关系

别再死记硬背了!用‘G谱号’这个核心逻辑,5分钟搞懂高音谱号与钢琴键位对应关系 第一次接触五线谱时,大多数人都会陷入一个误区——试图通过死记硬背"线上"和"间上"的音符位置来掌握高音谱号。这种机械记忆法看似高效&am…...

AD5593R模块除了当DAC,还能这么玩?用STM32F103配置它的ADC和GPIO模式

AD5593R模块的多面手玩法:在STM32F103上实现ADC与GPIO的混合配置 AD5593R这颗芯片在电子爱好者圈子里常被当作简单的8通道DAC使用,但它的真实能力远不止于此。想象一下,在一个智能传感器节点项目中,你需要同时控制执行器、读取多个…...

2026年AI大模型接口中转站全网实测:对比稳定性、兼容性与计费,找到最优选择

在开发AI应用时,调用链路常常成为最棘手的问题。网络波动导致的超时、成本失控以及更换供应商时大量的代码修改,都给开发者带来了很大的困扰。而“API中转站/聚合网关”可以在很大程度上缓解这些问题,但前提是要选对类型。 本文将基于稳定性…...

MDK5主题配置文件global.prop详解:从备份、修改到一键导入的完整指南

MDK5主题配置文件global.prop深度解析与实战指南 当你每天面对MDK5的默认灰白界面超过8小时,眼睛的疲劳感是否让你开始怀疑人生?作为嵌入式开发者的第二皮肤,编辑器的视觉体验直接影响编码效率和心情。global.prop这个看似普通的配置文件&…...

从‘它好慢’到秒开:前端工程师的本地开发环境优化实战(Vite + SwitchHosts + 自定义域名)

从‘它好慢’到秒开:前端工程师的本地开发环境优化实战(Vite SwitchHosts 自定义域名) 每次保存代码后都要等5秒才能看到效果?联调时要在浏览器地址栏输入http://192.168.1.100:3000/api/v1/users这样的复杂路径?这些…...

2026届最火的AI论文方案推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在当下的学术以及职场写作环境里头,查重跟降重的需求越发显著了。降重网站作为一…...

UE5启动卡在75%崩溃?别慌,先排查这个JetBrains插件(附卸载Rider详细步骤)

UE5启动卡在75%崩溃?深度解析JetBrains插件冲突与系统级解决方案 当Unreal Engine 5的启动进度条卡在75%时突然崩溃,屏幕上跳出EXCEPTION_ACCESS_VIOLATION的错误提示,这可能是许多开发者最近遇到的噩梦。不同于简单的软件冲突,这…...

C#项目依赖关系可视化工具:基于MSBuild的仓库地图生成器实现

1. 项目概述:从零构建一个C#仓库地图生成器最近在折腾一个挺有意思的小工具,起因是团队里新来的几个小伙伴,面对我们那个已经迭代了五六年、包含几十个项目和无数个NuGet包的C#解决方案时,总是有点懵。每次开需求评审会&#xff0…...

实战指南:基于快马平台开发功能完备的windowscleaner桌面应用

最近在做一个Windows系统清理工具的项目,正好用到了InsCode(快马)平台,整个过程特别顺畅,分享下我的实战经验。 为什么需要Windows系统清理工具 作为一个长期使用Windows系统的用户,我经常遇到磁盘空间不足的问题。系统运行久了…...

5分钟上手LayerDivider:AI智能图像分层工具让设计效率提升10倍

5分钟上手LayerDivider:AI智能图像分层工具让设计效率提升10倍 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 你是否曾经面对一张复杂的插图…...