网站开发公司 苏州,织梦网站做关键词,微网站建设云帆网络,平面ui设计是什么1.问题现象
系统长时间运行, 产生大量的系统日志 ubuntu/debian 系统日志如下 /var/log$ du -sh * 31M syslog # syslog日志 61M syslog.1 2.5G journal/ # systemd service日志 当日志文件过大, 硬盘空间占用100%时, 导致各种异常
命令按tab补全无响应服务/进程启动异常服务…1.问题现象
系统长时间运行, 产生大量的系统日志 ubuntu/debian 系统日志如下 /var/log$ du -sh * 31M syslog # syslog日志 61M syslog.1 2.5G journal/ # systemd service日志 当日志文件过大, 硬盘空间占用100%时, 导致各种异常
命令按tab补全无响应服务/进程启动异常服务/进程运行异常
2.问题原因
系统日志过大原因: 使用ubuntu非官方发行版本 使用ubuntu桌面发行版,自带日志清理服务项目使用的ubuntu-base 根文件, 定制根文件系统, 集成需要的工具,库,配置; 没有发行版本, 日志清理的服务 需要定制清除日志脚本
3.解决方案
方案1: cron定时任务清理日志方案2: 开机服务脚本,周定时清理日志方案3: logrotate 管理日志大小,备份,清理
最终使用方案3, logrotate 管理日志大小,备份,清理, 符合项目开发与运行需求.
cron清除日志,无法备份,无法追溯几天前的日志.开机服务脚本, 要实现管理日志大小, 备份, 清理的功能. 浪费人力开发脚本, 不如 logrotate 配置方便.
4.logrotate安装与配置实例
安装前置依赖 sudo apt install cron rsyslog 安装 sudo apt instlal logrotate 教程 https://www.cnblogs.com/carsonzhu/p/16904219.html
1.教程
1. 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 {size50Kdailyrotate 5compressmissingoknotifemptycreate 664 liuj liuj
}生成日志 cd /tmp/liuj; dd if/dev/zero ofxxx.log bs1M count1 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 7dailysize50Mmissingoknotifemptydelaycompresscompresspostrotate/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 5dailysize20Mmissingoknotifemptydelaycompresscompresspostrotate/usr/lib/rsyslog/rsyslog-rotateendscript
}4.限制systemd service的日志大小
systemd service有自己的限制日志规则 ls /var/log/journal/6d021ad1f019488facfc7e6e7ec8236f system.journal systemfaa337787dbc4bd49fdcaa0ceea09a96-00000000000871b0-0006123fac856242.journal system583db54cb7cb466c9a3c7678bc0766f2-0000000000012a2c-00060f97925e7c17.journal user-1000.journal user-1000b4fe8171a42f4f60a0a05c69bcfe1a5d-000000000009617d-0006124487b7d8a8.journal user-10003ecd5eb819b04efb9e9bba24908511e4-0000000000083c8a-0006109ff49ba016.journal 目前使用的方案是:
使用logrotate限制 system.journal, user-1000.journal使用cron定时任务 删除大于20M, 或超过7天的日志服务进程每次重启时, 尝试步删除大于20M, 或超过7天的日志
5.总结
ubunt桌面发行版有日志清理服务, 基于ubuntu-base定制文件系统固件, 需要自己编写清除日志脚本.logrotate是便捷的日志限制大小, 备份, 配置简单的管理工具.磁盘空间占用100%, 会导致各种运行异常.解决各种异常问题, 减少无效日志输出, 限制错误日志, 或通过配置选项开启调试模式. 减少磁盘/flash写操作, 延长产品寿命.
参考
logrotate原理: /lib/systemd/system/logrotate.service /lib/systemd/system/logrotate.timer systemd.timer定时任务: https://blog.csdn.net/greatyoulv/article/details/111301528ros日志基于log4j 限制大小,备份,自定义文件位置 https://blog.csdn.net/weixin_44388819/article/details/118407899https://blog.csdn.net/weixin_44388819/article/details/118407899