用Linux脚本轮转业务系统的日志
背景上一篇文章用Linux自带的logrotate来轮转日志确实方便但它会改变当前日志文件的指针因为它的机制是重新创建当前日志文件。在有些情况下会出现奇怪的问题。比如一直打开当前日志文件不关闭的业务系统会受影响。解决自己写Linux脚本来轮转日志最大的区别是不会重新创建当前日志而是收缩或清空当前日志。轮转#!/bin/bash# 日志轮转脚本 - rotate_log.sh# 使用方法可以放在crontab中每天00:01执行# crontab设置示例1 0 * * * /path/to/rotate_log.sh# 设置日志目录 - 请根据实际情况修改LOG_DIR/myapp/logCURRENT_LOG$LOG_DIR/current.log# 检查日志目录是否存在if[!-d$LOG_DIR];thenecho错误日志目录不存在 -$LOG_DIRexit1fi# 检查当前日志文件是否存在if[!-f$CURRENT_LOG];thenecho警告当前日志文件不存在 -$CURRENT_LOGexit0# 这不是致命错误只是没有日志需要轮转fi# 获取前一天的日期格式YYYY-MM-DD# 注意macOS和Linux的date命令参数可能不同这里使用通用格式YESTERDAY$(date-dyesterday%Y-%m-%d2/dev/null||date-v-1d %Y-%m-%d2/dev/null)if[-z$YESTERDAY];thenecho错误无法获取昨天的日期exit1fi# 备份文件名BACKUP_LOG$LOG_DIR/$YESTERDAY.log# 检查备份文件是否已存在if[-f$BACKUP_LOG];thenecho警告备份文件已存在跳过轮转 -$BACKUP_LOGexit0fi# 复制当前日志到备份文件ifcp$CURRENT_LOG$BACKUP_LOG;thenecho已复制日志到:$BACKUP_LOG# 清空当前日志文件iftruncate -s0$CURRENT_LOG;thenecho已清空当前日志文件:$CURRENT_LOGelse# 如果truncate命令不可用使用其他方法$CURRENT_LOGecho已清空当前日志文件:$CURRENT_LOGfi# 可选压缩备份文件以节省空间# gzip $BACKUP_LOG echo 已压缩备份文件: $BACKUP_LOG.gzecho日志轮转完成于:$(date)exit0elseecho错误无法复制日志文件exit1fi清理旧日志#!/bin/bash# 日志清理脚本 - clean_old_logs.sh# 删除超过7天的日志文件# crontab设置示例0 2 * * * /path/to/clean_old_logs.sh# 设置日志目录 - 请根据实际情况修改LOG_DIR/myapp/log# 设置保留天数DAYS_TO_KEEP7# 检查日志目录是否存在if[!-d$LOG_DIR];thenecho错误日志目录不存在 -$LOG_DIRexit1fi# 切换到日志目录cd$LOG_DIR||{echo错误无法进入日志目录 -$LOG_DIRexit1}# 查找并删除超过7天的.log文件# 注意这里使用find命令的-mtime参数它会根据文件的修改时间来判断# 7 表示7天以前的文件# -name *.log 表示匹配.log文件echo开始清理超过$DAYS_TO_KEEP天的日志文件...# 先列出将要删除的文件用于检查# echo 将要删除的日志文件:# find . -maxdepth 1 -name *.log -type f -mtime $DAYS_TO_KEEP -print# # 询问是否确认删除如果是手动执行# # 如果是crontab自动执行可以移除交互部分# if [ -t 0 ]; then# # 在终端中运行询问确认# read -p 是否确认删除这些文件(y/N): -n 1 -r# echo# if [[ ! $REPLY ~ ^[Yy]$ ]]; then# echo 取消操作# exit 0# fi# fi# 实际执行删除操作DELETED_COUNT$(find.-maxdepth1-name*.log-type f -mtime $DAYS_TO_KEEP -delete -print|wc-l)echo已删除$DELETED_COUNT个过期日志文件echo清理完成于:$(date)# 可选同时清理压缩的日志文件如果使用了压缩# find . -maxdepth 1 -name *.log.gz -type f -mtime $DAYS_TO_KEEP -delete# echo 已清理压缩的日志文件定时执行sudocrontab-e00* * * /myapp/logrotate/rotate_log.sh04* * * /myapp/logrotate/clean_old_logs.sh

相关新闻

【开题答辩全过程】以 基于python的二手房数据分析与可视化为例,包含答辩的问题和答案

【开题答辩全过程】以 基于python的二手房数据分析与可视化为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

2026/7/5 15:31:58 阅读更多 →
OpenClaw 和 Claude Code

OpenClaw 和 Claude Code

总结OpenClaw 和 Claude Code 没有官方关系。 OpenClaw 是社区项目,目标是“复刻 / 替代 Claude Code 的体验”。 它们是:灵感来源 使用场景高度相似,而不是同一个体系。一、Claude Code 是什么?Anthropic 官方专门为 Claude 模型…

2026/7/5 17:18:51 阅读更多 →
OpenClaw怎么部署?2026年OpenClaw(原Clawdbot)一键部署,手把手教学

OpenClaw怎么部署?2026年OpenClaw(原Clawdbot)一键部署,手把手教学

OpenClaw怎么部署?2026年OpenClaw(原Clawdbot)一键部署,手把手教学。OpenClaw(原名Clawdbot/Moltbot)是一款开源的本地优先AI代理与自动化平台。它不仅能像聊天机器人一样对话,更能通过自然语言调用浏览器、文件系统、…

2026/7/5 16:38:36 阅读更多 →

最新新闻

RAG 检索优化实战:基于 Recall@5、Precision@3、NDCG@10 的 3 步调优法

RAG 检索优化实战:基于 Recall@5、Precision@3、NDCG@10 的 3 步调优法

RAG 检索优化实战:基于 Recall5、Precision3、NDCG10 的 3 步调优法在构建检索增强生成(RAG)系统时,检索模块的性能直接影响最终生成内容的质量。本文将介绍一套基于 Recall5、Precision3 和 NDCG10 指标的实用调优方法&#xff0…

2026/7/6 8:43:54 阅读更多 →
终极指南:如何使用Scarab模组管理器快速安装空洞骑士游戏模组

终极指南:如何使用Scarab模组管理器快速安装空洞骑士游戏模组

终极指南:如何使用Scarab模组管理器快速安装空洞骑士游戏模组 【免费下载链接】Scarab An installer for Hollow Knight mods written with Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 你是否曾经为了在《空洞骑士》中安装一个心仪的模组…

2026/7/6 8:43:54 阅读更多 →
终极智能BP助手:如何用Seraphine轻松实现英雄联盟自动BP与战绩分析

终极智能BP助手:如何用Seraphine轻松实现英雄联盟自动BP与战绩分析

终极智能BP助手:如何用Seraphine轻松实现英雄联盟自动BP与战绩分析 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 你是否在英雄联盟排位赛中经常因为错过接受对局而懊恼?是否在BP阶段…

2026/7/6 8:41:53 阅读更多 →
专业显卡优化工具NVIDIA Profile Inspector:解锁游戏性能的6个关键步骤

专业显卡优化工具NVIDIA Profile Inspector:解锁游戏性能的6个关键步骤

专业显卡优化工具NVIDIA Profile Inspector:解锁游戏性能的6个关键步骤 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector是一款专业的开源显卡驱动配置工具&#xf…

2026/7/6 8:39:52 阅读更多 →
新手入门:5分钟学会使用openEuler迁移助手

新手入门:5分钟学会使用openEuler迁移助手

新手入门:5分钟学会使用openEuler迁移助手 【免费下载链接】migration-assistant Migration assistant helps users migrate business applications from other Linux hairstyles to openEuler OS. 项目地址: https://gitcode.com/openeuler/migration-assistant …

2026/7/6 8:33:50 阅读更多 →
MIL 增量学习实战:基于注意力与原型映射,3数据集F1分数提升2-4%

MIL 增量学习实战:基于注意力与原型映射,3数据集F1分数提升2-4%

MIL增量学习实战:基于注意力与原型映射的性能突破1. 前沿交叉领域的创新实践在动态数据环境下,多示例学习(MIL)与增量学习的结合正成为解决现实问题的关键技术。传统MIL方法在静态封闭环境中表现优异,但当面对持续新增…

2026/7/6 8:33:50 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻