ubuntu_定制文件系统[2]-清理日志log

1.问题现象

  1. 系统长时间运行, 产生大量的系统日志
    ubuntu/debian 系统日志如下
    /var/log$ du -sh *

31M syslog # syslog日志
61M syslog.1
2.5G journal/ # systemd service日志

  1. 当日志文件过大, 硬盘空间占用100%时, 导致各种异常
  • 命令按tab补全无响应
  • 服务/进程启动异常
  • 服务/进程运行异常

2.问题原因

  1. 系统日志过大原因: 使用ubuntu非官方发行版本
    1. 使用ubuntu桌面发行版,自带日志清理服务
    2. 项目使用的ubuntu-base 根文件, 定制根文件系统, 集成需要的工具,库,配置; 没有发行版本, 日志清理的服务
  2. 需要定制清除日志脚本

3.解决方案

  • 方案1: cron定时任务清理日志
  • 方案2: 开机服务脚本,周定时清理日志
  • 方案3: logrotate 管理日志大小,备份,清理

最终使用方案3, logrotate 管理日志大小,备份,清理, 符合项目开发与运行需求.

  1. cron清除日志,无法备份,无法追溯几天前的日志.
  2. 开机服务脚本, 要实现管理日志大小, 备份, 清理的功能. 浪费人力开发脚本, 不如 logrotate 配置方便.

4.logrotate安装与配置实例

安装前置依赖 sudo apt install cron rsyslog
安装 sudo apt instlal logrotate
教程 https://www.cnblogs.com/carsonzhu/p/16904219.html

1.教程

1. logrotate 主要参数表

logrotate参数选项

2.系统默认的配置参考

ls /etc/logrotate.d
alternatives apt aptitude btmp dpkg pm-utils rsyslog wtmp

cat /etc/logrotate.d/rsyslog

/var/log/syslog
{rotate 7dailymissingoknotifemptydelaycompresscompresspostrotate/usr/lib/rsyslog/rsyslog-rotateendscript
}/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{rotate 4weeklymissingoknotifemptycompressdelaycompresssharedscriptspostrotate/usr/lib/rsyslog/rsyslog-rotateendscript
}

2.实例

1.手动logrotate运行测试

配置脚本
vim /etc/logrotate.d/liuj_tmp_log

/tmp/liuj/*.log {size=50Kdailyrotate 5compressmissingoknotifemptycreate 664 liuj liuj
}

生成日志
cd /tmp/liuj; dd if=/dev/zero of=xxx.log bs=1M count=1
du -sh *

1.0M xxx.log

或用脚本生成日志.

手动整理日志
logrotate -vf /etc/logrotate.d/liuj_tmp_log
查看整理之后的结果 du -sh *

0 xxx.log
4.0K xxx.log.1.gz -->整理之后的文件大小

2.限制syslog大小

vim /etc/logrotate.d/rsyslog

/var/log/syslog
{rotate 7daily
++	size=50Mmissingoknotifemptydelaycompresscompresspostrotate/usr/lib/rsyslog/rsyslog-rotateendscript
}

3.管理ros程序日志

设置系统 ros 日志位置
/etc/profile.d/ros_env.sh

source /opt/ros/noetic/setup.bash
export ROS_LOG_DIR=/userdata/workdir/ros_log

查看环境变量是否生效
echo $ROS_LOG_DIR

/userdata/workdir/ros_log

限制 ros 程序日志规则
vim /etc/logrotate.d/ros_log

/userdata/workdir/ros_log/*.log
{rotate 5dailysize=20Mmissingoknotifemptydelaycompresscompresspostrotate/usr/lib/rsyslog/rsyslog-rotateendscript
}

4.限制systemd service的日志大小

  • systemd service有自己的限制日志规则
    ls /var/log/journal/6d021ad1f019488facfc7e6e7ec8236f

system.journal
system@faa337787dbc4bd49fdcaa0ceea09a96-00000000000871b0-0006123fac856242.journal
system@583db54cb7cb466c9a3c7678bc0766f2-0000000000012a2c-00060f97925e7c17.journal
user-1000.journal
user-1000@b4fe8171a42f4f60a0a05c69bcfe1a5d-000000000009617d-0006124487b7d8a8.journal
user-1000@3ecd5eb819b04efb9e9bba24908511e4-0000000000083c8a-0006109ff49ba016.journal

目前使用的方案是:

  1. 使用logrotate限制 system.journal, user-1000.journal
  2. 使用cron定时任务 删除大于20M, 或超过7天的日志
  3. 服务进程每次重启时, 尝试步删除大于20M, 或超过7天的日志

5.总结

  1. ubunt桌面发行版有日志清理服务, 基于ubuntu-base定制文件系统固件, 需要自己编写清除日志脚本.
  2. logrotate是便捷的日志限制大小, 备份, 配置简单的管理工具.
  3. 磁盘空间占用100%, 会导致各种运行异常.
  4. 解决各种异常问题, 减少无效日志输出, 限制错误日志, 或通过配置选项开启调试模式. 减少磁盘/flash写操作, 延长产品寿命.

参考

  • logrotate原理:

/lib/systemd/system/logrotate.service
/lib/systemd/system/logrotate.timer

  • systemd.timer定时任务: https://blog.csdn.net/greatyoulv/article/details/111301528
  • ros日志基于log4j 限制大小,备份,自定义文件位置
    • https://blog.csdn.net/weixin_44388819/article/details/118407899
    • https://blog.csdn.net/weixin_44388819/article/details/118407899

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/517948.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

疾控中心污水采样器自动采样——解放双手更轻松

疾控中心使用的污水采样器如今已经实现了自动化采样,这无疑给工作人员带来了极大的便利。这种设备能够完成污水取样、储存等环节,不再需要人工干预。这意味着工作人员可以解放双手,不再需要进行繁重的取样工作。 这种自动化的采样方式不仅减轻…

ArmSoM规划开发基于RK3576的开发套件

ArmSoM正计划推出一款新的产品,这款产品将采用强大的RK3576芯片。 本文将为您介绍我们的新产品搭载的RK3576性能参数,以及它如何为您提供卓越的性能和功能。 RK3576处理器 RK3576处理器是一款强大的处理器,具备出色的性能和多样化的功能&a…

回溯算法06-复原IP地址(Java/分割字符串)

6.复原IP地址 题目描述 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 . 分隔。 例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址&#xff0…

SAP PP学习笔记07 - 简单BOM,派生BOM,多重BOM,批量修改工具 CEWB

上一章讲了BOM的操作。 SAP PP学习笔记06 - BOM操作(BOM 展开,BOM 使用先一览,BOM比较,批量更改BOM)-CSDN博客 本章延续上一章,继续讲BOM操作。 主要讲 派生BOM,多重BOM,以及BOM批…

【python】对角线遍历

python系列文章目录 【python】基于cv2提取图片上的文本内容 【python】简单作图 【python】数组字符串等实用 【python】sort与sorted排序使用 【python】对角线遍历 python系列文章目录说明1.分析2.注意事项2.1 遍历2.2 区间2.3 顺序 3.代码实现 说明 给你一个大小为 m x n…

C--8--解决因配置文件中字符编码不一致问题导致的错误

1、介绍: ASCII 1个字节1个文字 ANSI 2个字节1个文字 UNICODE 3或4个甚至更多字节1个文字 ASCII、ANSI、UNICODE这三种压缩后,变为UTF-8、UTF-16、UTF-32。 ASCII、ANSI、UNICODE 是字符编码,即给全世界每…

C语言题目练习

目录 前言 1、转置矩阵 1.1 题目 描述 输入描述: 输出描述: 1.2解题 分析: 程序: 2、KiKi判断上三角矩阵 2.1 题目 描述 输入描述: 输出描述: 2.2 解题 分析: 程序: 3、…

微信抽奖小程序制作步骤是什么_轻松点燃营销热潮

微信抽奖小程序,轻松点燃营销热潮! 在数字化营销的时代,如何吸引用户眼球、提升品牌知名度,成为了每一个企业都必须面对的问题。而微信抽奖小程序,正是一个能够迅速点燃营销热潮的利器。那么,如何制作一款…

NextJs教程系列(三):路由layout

可复用的布局 Next.js的layout是一个可复用的布局&#xff0c;不同的子页面可以共享布局容器&#xff0c;页面跳转时&#xff0c;layout容器不会重新渲染。 children props export default function RootLayout({ children }) {return (<html lang"en"><…

okHttp MediaType MIME格式详解

一、介绍 我们在做数据上传时&#xff0c;经常会用到Okhttp的开源库&#xff0c;okhttp开源库也遵循html提交的MIME数据格式。 所以我们经常会看到applicaiton/json这样的格式在传。 但是如果涉及到其他文件等就需要详细的数据格式&#xff0c;否则服务端无法解析 二、okHt…

mysql-DBA(1)-数据库备份恢复-导入导出-日志解释

1.备份类型 log: hdd data :ssd 2.数据库工具 3.逻辑备份和物理备份 &#xff0c;备份和导出都慢&#xff0c;缓冲池有污染。 逻辑备份&#xff1a;把所有的命令转换成sql语句。 修改配置文件&#xff1a; 3.1MySQLDUMP -A 备份所有 -B 备份哪个数据库 --master-data1 同步 …

Flyway 9.22.3 + springboot3 + MySQL8.0+,简单使用

文章目录 flyway的依赖配置ieda 启动&#xff01;&#xff01;&#xff01; 关于这篇文章主要是自己在使用flyway时遇到的一些问题以及最终的解决方法 当然包括所有的配置&#xff0c;主要目的是记录一下防止下次使用的时候忘记 flyway的依赖 这里 springboot 3 具体版本不再描…