linux下用logrotate分割管理删除日志

在网站项目中,经常需要生成log。时间久了 log文件就越来越大。
需要写脚本来定期删除。
其实可以用linux的logrotate命令来分割管理日志,很方便。
比如我有一个log叫test.log。路径为/mnt/www/cron/test.log
需要每天对这个log进行备份,并且自动删除5天前的log。

1,安装

1
2
3
4
5
ubuntu下
apt-get install logrotate cron

centos下
yum install logrotate crontabs

 

2,在/etc/logrotate.d/新建配置文件 test

1
2
3
4
5
6
7
8
9
10
/mnt/www/cron/test.log{
notifempty
daily
rotate 5
missingok
dateext
compress
copytruncate
nocreate
}

 

1
2
3
4
5
6
7
8
9
10
//mnt/www/cron/test.log  指明日志文件的绝对路径
// daily;表示日志每天轮转一次,其它可用值为‘monthly’,‘weekly’或者‘yearly’。
// dateext;表示切换后的日志文件会附加上一个短横线和YYYYMMDD格式的日期,如果没有这个配置项则会附加一个小数点加一个数字序号
// copytruncate;表示在复制当前日志文件后,将日志文件清空;而不是将当前日志文件改名后创建一个新的
// compress;表示压缩切换后的日志文件
// rotate 5;表示保存5份旧的日志文件
//notifempty :如果是空文件的话,不转储。
//missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。

// 更多配置请参考 man logrotate 手册.

3,手动执行

1
logrotate -f /etc/logrotate.d/test

4,定时执行

在/etc/cron.daily目录下有logrotate执行的脚本。通过crontab程序每天执行一次

1
2
比如每天晚上1点执行
0 1 * * * /usr/sbin/logrotate /etc/logrotate.conf

 

参考

https://linux.cn/article-4126-1.html

坚持原创技术分享,您的支持将鼓励我继续创作!