RedHat压缩旧的日志


最近在做一个项目的测试,由于日志级别设置的是最低级别的,并且代码24小时运行,所以产生了庞大的日志。5天的测试时间,产生了80个G的日志文件。

一直在用Ubuntu系统,发现Ubuntu系统会自动压缩老的日志,调查之后发现是cron运行了savelog这个命令。但是redhat没有这个命令,就用find和gzip替代解决。

目标:系统每天执行一次命令,压缩两天以前的日志。

1、编写压缩脚本。

#!/bin/sh
find /var/opt/app/log/ –type f –mtime +2 | xargs gzip

如果需要查询指定的文件可以使用 –name pattern来替代-type f选项
比如,搜索.log后缀的
find /var/opt/app/log/ –name “*.log” –mtime +2
也可以搜索所有没有压缩的文件
find /var/opt/app/log/ ! –name “*.gz” –mtime +2

2、设置定时计划,通过查询/etc/crontab文件得知,每天运行的时间是在4点02分,并且把脚本放到/etc/cron.daily目录下即可。

$ cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

3、通过上面两步,就简单的完成了日志自动压缩的功能。

压缩的日志要怎么查询呢?使用zgrep把,具体的使用方法可以参考man zgrep

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s