Linux日志怎么切割_Linux日志通过自定义脚本实现按大小切割的技巧
发布时间 - 2025-11-12 00:00:00 点击率:次答案:通过Shell脚本按大小切割日志可提升灵活性,核心是定期检查文件大小,超限时重命名并清空原文件。示例脚本使用du -b获取字节数,配合mv和>实现切割与清空,结合crontab每5分钟执行,需注意权限、服务信号处理及备份保留策略,适用于高定制化场景。
Linux系统中,日志文件长时间运行后容易变得非常大,影响系统性能和排查问题的效率。虽然logrotate是常用的日志管理工具,但有时我们需要更灵活的方式,比如根据文件大小来实时切割日志。通过自定义脚本实现按大小切割日志是一种实用且可控的方法。
判断日志文件大小并触发切割
核心思路是编写一个Shell脚本,定期检查目标日志文件的大小,一旦超过预设阈值(如100MB),就自动将其重命名或压缩,并清空原文件,保证服务可以继续写入。
常用命令组合:
- du -h logfile 查看文件大小(人类可读格式)
- du -b logfile 获取文件字节数(便于比较)
- mv old.log old.log.1 重命名旧日志
- > logfile 快速清空文件(不中断写入)
编写按大小切割的日志脚本
下面是一个简单的Shell脚本示例,用于监控指定日志文件并按大小切割:
#!/bin/bashLOG_FILE="/var/log/myapp.log"
MAX_SIZE=104857600 # 100MB in bytes
CURRENT_SIZE=$(du -b "$LOG_FILE" 2>/dev/null | cut -f1)
if [ "$CURRENT_SIZE" -gt "$MAX_SIZE" ]; then
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
mv "$LOG_FILE" "${LOG_FILE}.${TIMESTAMP}"
> "$LOG_FILE"
# 可选:压缩归档
# gzip "${LOG_FILE}.${TIMESTAMP}"
fi
说明:
- 设定最大允许大小(单位为字节)
- 使用du -b获取精确字节大小
- 切割时加上时间戳避免重名
- 用> file清空而非删除,防止进程写入失败
结合crontab实现定时执行
将脚本加入定时任务,实现周期性检查。例如每5分钟运行一次:
# 编辑当前用户的cron任务crontab -e
# 添加如下行
*/5 * * * * /path/to/log_rotate_script.sh
确保脚本有可执行权限:
chmod +x /path/to/l
og_rotate_script.sh注意事项与优化建议
实际使用中需注意以下几点:
- 确保运行脚本的用户对日志文件有读写和移动权限
- 某些服务在日志被清空后可能需要发送kill -USR1信号重新打开文件(如Nginx、Apache)
- 可增加保留份数机制,删除过期的日志备份
- 添加简单日志记录功能,便于追踪切割行为
- 对于高频率写入场景,考虑加锁防止并发问题
基本上就这些。通过自定义脚本控制日志切割,灵活性更高,适合嵌入特定业务流程或无法使用logrotate的环境。关键在于稳定判断大小、安全清空文件、合理命名归档。不复杂但容易忽略细节。
# linux
# apache
# nginx
# app
# 字节
# 工具
# linux系统
# shell脚本
# bash
# NULL
# if
# date
# timestamp
# var
# 并发
# 清空
# 重命名
# 自定义
# 需注意
# 定期检查
# 是一个
# 是一种
# 长时间
# 适用于
# 将其
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何使用Blade组件和插槽?(Component代码示例)
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
如何在景安云服务器上绑定域名并配置虚拟主机?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
如何用PHP快速搭建CMS系统?
如何解决hover在ie6中的兼容性问题
制作企业网站建设方案,怎样建设一个公司网站?
如何在腾讯云免费申请建站?
如何为不同团队 ID 动态生成多个非值班状态按钮
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
Laravel如何处理CORS跨域请求?(配置示例)
php结合redis实现高并发下的抢购、秒杀功能的实例
Python高阶函数应用_函数作为参数说明【指导】
如何彻底卸载建站之星软件?
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
中山网站推广排名,中山信息港登录入口?
b2c电商网站制作流程,b2c水平综合的电商平台?
如何快速生成ASP一键建站模板并优化安全性?
Android 常见的图片加载框架详细介绍
微信小程序制作网站有哪些,微信小程序需要做网站吗?
如何实现javascript表单验证_正则表达式有哪些实用技巧
网页设计与网站制作内容,怎样注册网站?
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
Laravel如何使用withoutEvents方法临时禁用模型事件
jQuery validate插件功能与用法详解
Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程
如何构建满足综合性能需求的优质建站方案?
如何在Windows 2008云服务器安全搭建网站?
Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
重庆市网站制作公司,重庆招聘网站哪个好?
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
微信小程序 scroll-view组件实现列表页实例代码
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
如何快速搭建高效香港服务器网站?
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
Swift中循环语句中的转移语句 break 和 continue
googleplay官方入口在哪里_Google Play官方商店快速入口指南
在线教育网站制作平台,山西立德教育官网?
如何快速启动建站代理加盟业务?
如何快速生成专业多端适配建站电话?
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
详解Android——蓝牙技术 带你实现终端间数据传输
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程

