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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 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日志切割


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2月前
|
Kubernetes Ubuntu Windows
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
|
2天前
|
监控 安全 Linux
使用NRPE和Nagios监控Linux系统资源的方法
通过遵循以上步骤,可以有效地使用NRPE和Nagios监控Linux系统资源,确保系统运行稳定,并及时响应任何潜在的问题。这种方法提供了高度的可定制性和灵活性,适用于从小型环境到大型分布式系统的各种监控需求。
12 2
|
2月前
|
缓存 NoSQL Linux
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
|
10天前
|
Shell Linux Python
python执行linux系统命令的几种方法(python3经典编程案例)
文章介绍了多种使用Python执行Linux系统命令的方法,包括使用os模块的不同函数以及subprocess模块来调用shell命令并处理其输出。
13 0
|
2月前
|
Ubuntu Linux 虚拟化
安装Windows Linux 子系统的方法:适用于windows 11 版本
本文提供了在Windows 11系统上安装Linux子系统(WSL)的详细步骤,包括启用子系统和虚拟化功能、从Microsoft Store安装Linux发行版、设置WSL默认版本、安装WSL2补丁,以及完成Ubuntu的首次安装设置。
130 2
|
2月前
|
Ubuntu Linux 测试技术
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
|
2月前
|
监控 安全 Linux
在Linux中,某个账号登陆linux后,系统会在哪些日志文件中记录相关信息?
在Linux中,某个账号登陆linux后,系统会在哪些日志文件中记录相关信息?
|
2月前
|
开发者 前端开发 编解码
Vaadin解锁移动适配新境界:一招制胜,让你的应用征服所有屏幕!
【8月更文挑战第31天】在移动互联网时代,跨平台应用开发备受青睐。作为一款基于Java的Web应用框架,Vaadin凭借其组件化设计和强大的服务器端渲染能力,助力开发者轻松构建多设备适应的Web应用。本文探讨Vaadin与移动设备的适配策略,包括响应式布局、CSS媒体查询、TouchKit插件及服务器端优化,帮助开发者打造美观且实用的移动端体验。通过这些工具和策略的应用,可有效应对屏幕尺寸、分辨率及操作系统的多样性挑战,满足广大移动用户的使用需求。
35 0
|
2月前
|
存储 运维 监控
Entity Framework Core 实现审计日志记录超棒!多种方法助你跟踪数据变化、监控操作,超实用!
【8月更文挑战第31天】在软件开发中,审计日志记录对于跟踪数据变化、监控用户操作及故障排查至关重要。Entity Framework Core (EF Core) 作为强大的对象关系映射框架,提供了多种实现审计日志记录的方法。例如,可以使用 EF Core 的拦截器在数据库操作前后执行自定义逻辑,记录操作类型、时间和执行用户等信息。此外,也可通过在实体类中添加审计属性(如 `CreatedBy`、`CreatedDate` 等),并在保存实体时更新这些属性来记录审计信息。这两种方法都能有效帮助我们追踪数据变更并满足合规性和安全性需求。
22 0
|
2月前
|
Linux 开发工具 文件存储
Linux修改主机名的两种方法
Linux修改主机名的两种方法
24 0
下一篇
无影云桌面