Linux日志怎么切割_Linux日志借助logrotate实现日志切割后邮件通知的技巧

发布时间 - 2025-11-10 00:00:00    点击率:
答案:logrotate可自动切割Linux日志并支持邮件通知。通过配置daily、rotate等参数实现按天切割、保留7份备份,使用postrotate脚本在切割后触发mail命令发送通知,需配合ssmtp等工具配置SMTP邮件服务,最后用logrotate -d调试、-f强制执行验证效果。

Linux系统中日志文件会随着时间不断增长,过大的日志不仅占用磁盘空间,还会影响排查问题的效率。使用logrotate是实现日志切割的标准方式,它能自动按时间或大小分割日志,并支持压缩、归档等操作。更进一步,可以通过配置在日志切割后发送邮件通知,便于运维人员掌握日志处理状态。

logrotate基本工作原理

logrotate是Linux自带的日志管理工具,通常由cron每天自动调用执行。它通过读取配置文件来判断哪些日志需要切割,以及如何处理旧日志。

主要配置目录:

  • /etc/logrotate.conf:主配置文件
  • /etc/logrotate.d/:第三方服务或自定义日志的配置文件存放目录

每个服务(如nginx、tomcat)可在此目录下创建独立配置文件,避免修改主配置。

配置日志切割并启用邮件通知

要实现日志切割后发送邮件,关键是利用logrotate的postrotate脚本,在日志完成切割后触发邮件发送动作。

以Nginx为例,编辑配置文件:

sudo vim /etc/logrotate.d/nginx

内容示例如下:

/var/log/nginx/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        if [ -f /var/run/nginx.pid ]; then
            kill -USR1 `cat /var/run/nginx.pid`
        fi
        echo "Nginx日志已于$(date)完成切割" | mail -s "Nginx日志切割通知" admin@example.com
    endscript
}

关键点说明:

  • daily:每天切割一次
  • rotate 7:保留7个历史日志文件
  • compress:使用gzip压缩旧日志
  • sharedscripts:确保postrotate脚本只执行一次,即使有多个日志文件
  • postrotate ... endscript:切割后执行的命令块
  • mail命令发送通知:需系统已配置可用的邮件发送服务(如ssmtp、sendmail或msmtp)

配置系统邮件发送功能

若系统未配置邮件发送,logrotate无法发出通知。推荐使用ssmtpmsmtp将邮件转发到外部SMTP服务器。

安装ssmtp:

sudo apt install ssmtp

编辑配置:

sudo vim /etc/ssmtp/ssmtp.conf

添加内容:

root=your_email@gmail.com
mailhub=smtp.gmail.com:587
AuthUser=your_email@gmail.com
AuthPass=your_app_password
UseTLS=YES
UseSTARTTLS=YES

保存后测试发信:

echo "测试邮件" | mail -s "test" admin@example.com

确保能收到邮件后再启用logrotate通知。

验证与调试logrotate

使用以下命令手动运行并查看详细输出:

sudo logrotate -d /etc/logrotate.d/nginx

-d表示debug模式,不会真正执行切割,仅模拟过程。

确认无误后可强制执行一次:

sudo logrotate -f /etc/logrotate.d/nginx

检查日志目录是否有新生成的.1文件,并确认是否收到邮件。

基本上就这些。只要配置好logrotate和邮件通道,就能实现自动切割+通知,提升系统可观测性又不增加维护负担。


# linux  # word  # go  # nginx  # app  # 工具  # tomcat  # ai  # 配置文件  # echo  # mail  # vim  # 邮件发送  # 发送邮件  # 强制执行  # 就能  # 多个  # 在此  # 还会  # 推荐使用  # 可以通过 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: php打包exe后无法访问网络共享_共享权限设置方法【教程】  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  如何在万网自助建站中设置域名及备案?  Laravel Session怎么存储_Laravel Session驱动配置详解  linux top下的 minerd 木马清除方法  网站图片在线制作软件,怎么在图片上做链接?  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践  Laravel怎么为数据库表字段添加索引以优化查询  Laravel中的withCount方法怎么高效统计关联模型数量  jQuery 常见小例汇总  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  QQ浏览器网页版登录入口 个人中心在线进入  Android自定义控件实现温度旋转按钮效果  如何挑选最适合建站的高性能VPS主机?  南京网站制作费用,南京远驱官方网站?  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  网易LOFTER官网链接 老福特网页版登录地址  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  Python结构化数据采集_字段抽取解析【教程】  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  EditPlus中的正则表达式实战(6)  香港服务器网站推广:SEO优化与外贸独立站搭建策略  Laravel如何优化应用性能?(缓存和优化命令)  如何在 React 中条件性地遍历数组并渲染元素  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  大学网站设计制作软件有哪些,如何将网站制作成自己app?  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  Claude怎样写结构化提示词_Claude结构化提示词写法【教程】  如何用虚拟主机快速搭建网站?详细步骤解析  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  ,南京靠谱的征婚网站?  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  如何在IIS中新建站点并解决端口绑定冲突?  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  非常酷的网站设计制作软件,酷培ai教育官方网站?  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  高端企业智能建站程序:SEO优化与响应式模板定制开发  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  北京网站制作公司哪家好一点,北京租房网站有哪些?  如何为不同团队 ID 动态生成多个独立按钮  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  Laravel怎么调用外部API_Laravel Http Client客户端使用  如何注册花生壳免费域名并搭建个人网站?  Laravel怎么在Controller之外的地方验证数据