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日志切割


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
26天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
78 1
|
17天前
|
关系型数据库 MySQL Linux
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
22 0
|
19天前
|
存储 监控 安全
Linux系统日志
【4月更文挑战第6天】Linux系统日志,关键用于记录系统状态和事件,包括内核、系统、安全和应用日志,助力管理员诊断问题、确保系统正常运行。日志管理涉及收集、分析、备份等,常用工具如rsyslog、systemd-journal和logrotate(用于日志轮转)。重视日志文件的存储管理,防止空间占用过多。
19 1
Linux系统日志
|
25天前
|
Ubuntu Linux
常用Linux开机启动添加方法
常用Linux开机启动添加方法
15 1
|
2天前
|
人工智能 Linux
Linux查找大文件的方法
Linux查找大文件的方法
|
11天前
|
SQL 监控 安全
Linux&Windows 日志分析 陇剑杯 CTF
Linux&Windows 日志分析 陇剑杯 CTF
|
17天前
|
Linux Shell 虚拟化
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
28 0
|
19天前
|
监控 Linux
|
22天前
|
关系型数据库 MySQL Linux
linux特定服务日志
Linux系统的服务日志在`/var/log`目录下,如系统日志(`/var/log/syslog`或`/var/log/messages`)、认证日志(`/var/log/auth.log`)、SSH日志(`/var/log/auth.log`或`/var/log/secure`)。Web服务器(Apache和Nginx)的访问和错误日志、MySQL错误日志、Postfix及Dovecot邮件服务器日志也在此处。日志位置可能因发行版和服务配置而异,不确定时可查服务配置或用`grep`搜索。使用`logrotate`可管理日志文件大小。
22 6
|
23天前
|
存储 缓存 监控
深入解析linux内存指标:快速定位系统内存问题的有效技巧与实用方法(free、top、ps、vmstat、cachestat、cachetop、sar、swap、动态内存、cgroops、oom)
深入解析linux内存指标:快速定位系统内存问题的有效技巧与实用方法(free、top、ps、vmstat、cachestat、cachetop、sar、swap、动态内存、cgroops、oom)