linux下实现日志切割的两种方法 logrotate

简介: linux下实现日志切割的两种方法 logrotate

方案一 脚本+crontab


一、 编写脚本

vi nginx-split.sh
# 拷贝日志文件到 昨天的log中 -b  split 可以进行文件切割,如果不需要文件的切割可以将 split -b 100k -d 换成 cp ,-b指定单个文件大小,-d 指定如果单个文件过大,进行切割时文件的后缀为数字
split -b 100k -d  /opt/nginx.log /opt/logs/nginx.log.`date -d yesterday +%Y%m%d-%H:%M:%S`.log
# 清空nginx.log 日志,这个地方于要写绝对路径,否则导致日志文件不会被清空
cat /dev/null > /opt/nginx.log


二、授权

给刚才编辑是脚本文件授予执行权限

chmod u+x nginx-split.sh


二、加入定时器


crontab -e
#每隔1分钟执行一次
*/1 * * * * /opt/nginx-split.sh


定时任务加入成功以后会有如下提示:



查看定时任务列表,以及定时任务是否在正常执行



如果输入pgrep cron 没找到相关进程,则任务也不会执行。=

最后执行的结果如下:



缺点: 如果日志文件比较大,MV是需要时间的,这段时间内的日志有可能丢失。logrotate可以在切割日志的同时,不丢失数据


方案二 logrotate+crontab

参考文章: Linux日志切割神器logrotate原理介绍和配置详解


logrotate 程序是一个日志文件管理工具(一般centos都自带)。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转 储,这个过 程一般通过 cron 程序来执行。logrotate 程序还可以用于压缩日志文件,以及发送日志到指定的E-mail 。系统自带的日志切割的配置文件在/etc/logrotate.conf 和 /etc/logrotate.d/syslog 里面。


一、 编写配置文件

vim  test-logsplit
/opt/my/test.log{
  daily
  #配置能有多少个日志文件,超过了就会将以前的删除
  rotate 10
  missingok
  notifempty
  minsize=1M
    maxsize=10M
    #等test.log 到这个大小就会进行日志切割,而不是切割后的日志文件
    size=1M
  sharedscripts
  postrotate
    cat /dev/null > /opt/my/test.log
  endscript
}


需要注意的是如果报这个错误一般就是文件编码错误,将文件删除,重新手动输入一遍。



加入定时器


crontab -e
# 每一分钟执行一次
*/1 * * * * /usr/sbin/logrotate -vf /opt/test-logsplit


结果如下图:



参考连接

CentOS下的日志切割

Linux日志切割神器logrotate原理介绍和配置详解

linux日志切割


相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
7月前
|
Ubuntu 物联网 Linux
从零安装一个Linux操作系统几种方法,以Ubuntu18.04为例
一切就绪后,我们就可以安装操作系统了。当系统通过优盘引导起来之后,我们就可以看到跟虚拟机中一样的安装向导了。之后,大家按照虚拟机中的顺序安装即可。 好了,今天主要介绍了Ubuntu Server版操作系统的安装过程,关于如何使用该操作系统,及操作系统更深层的原理,还请关注本号及相关圈子。
|
6月前
|
存储 缓存 监控
用 C++ 红黑树给公司电脑监控软件的日志快速排序的方法
本文介绍基于C++红黑树算法实现公司监控电脑软件的日志高效管理,利用其自平衡特性提升日志排序、检索与动态更新效率,并结合实际场景提出优化方向,增强系统性能与稳定性。
194 4
|
7月前
|
缓存 监控 Linux
Linux系统清理缓存(buff/cache)的有效方法。
总结而言,在大多数情形下你不必担心Linux中buffer与cache占用过多内存在影响到其他程序运行;因为当程序请求更多内存在没有足够可用资源时,Linux会自行调整其占有量。只有当你明确知道当前环境与需求并希望立即回收这部分资源给即将运行重负载任务之前才考虑上述方法去主动干预。
2048 10
|
7月前
|
Ubuntu Linux 图形学
推广与体验Ubuntu Linux的便捷方法
如果你的朋友或家人对尝试Linux感兴趣,但希望在安装之前先体验一下,你可以分享以下链接给他们:Ubuntu在线导览。通过这个链接,他们可以在任何地方轻松体验Ubuntu,无需安装即可深入了解这个流行的操作系统。
|
7月前
|
XML 缓存 Linux
在Linux环境下解决Visual Studio Code字体显示异常和字体替换方法。
解决Linux下VS Code字体显示异常,需要对Linux字体渲染机制有所理解,并对VS Code的配置选项进行合理设置。替换字体时则要通过系统字体配置或VS Code设置来完成。通过上述方法,可以有效地解决字体显示问题,从而提升代码编辑的视觉体验。
1105 0
|
8月前
|
监控 Linux 应用服务中间件
linux查看日志文件tail -f用法
在 Linux 中,查看和监控日志文件是系统管理员和开发者常用的操作之一。tail 命令就是用来查看文件内容的,它默认显示文件的最后部分。tail -f 是 tail 命令的一个非常有用的选项,用于实时查看和跟踪日志文件的更新,尤其是在监控运行中的服务时非常有用。
1026 0
|
8月前
|
Prometheus 监控 Cloud Native
使用docker-compose管理多服务项目:日志监控方法指南
通过上述步骤,可以建立有效的日志监控系统,这不仅有助于问题的迅速定位和解决,而且对于分析系统性能、用户行为模式等都是一个宝贵的资源。只要正确配置和维护,Docker Compose管理的多服务项目可以高效地进行日志监控与分析。
339 0
|
10月前
|
NoSQL Linux 编译器
GDB符号表概念和在Linux下获取符号表的方法
通过掌握这些关于GDB符号表的知识,你可以更好地管理和理解你的程序,希望这些知识可以帮助你更有效地进行调试工作。
432 16
|
8月前
|
网络协议 Ubuntu Linux
Wireguard in Linux的安装方法
本文介绍了如何在Ubuntu和Rocky Linux中安装配置WireGuard,并探讨了配置过程中可能出现的DNS泄露问题及解决方法,包括通过nmtui设置DNS及调整DNS优先级参数。