在我们日常的运维工作中,日志文件无疑是每个人都遇到的过的问题,文件太大,文件太多,磁盘空间不够了….
logrotate是一个帮助我们自动压缩,分割,删除,甚至通过邮件的形式发送log文件的工具
logrotate一般可以每天,每周,每月执行,除非你指定了按照文件大小来分割,否则logrotate不会在指定时间执行多次
强制执行的命令是
logrotate -f /etc/logrotate.d/syslog
-f: force
/etc/logrotate.d/syslong: 配置文件所在
看几个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# sample logrotate configuration file compress /var/log/messages { rotate 5 weekly postrotate /sbin/killall -HUP syslogd endscript } "/var/log/httpd/access.log" /var/log/httpd/error.log { rotate 5 mail www@my.org size=100k sharedscripts postrotate /sbin/killall -HUP httpd endscript } /var/log/news/news.crit { monthly rotate 2 olddir /var/log/news/old missingok postrotate kill -HUP ‘cat /var/run/inn.pid‘ endscript nocompress } |
其中compress是一个全局的设置:压缩我们分割之后的文件
第一个message的例子:
这个例子定义了logrotated如何自动的处理我们的日志文件message,首先,它会每周执行一次,而且,会保留5个版本,也就是保留5周,5周之后自动删除。在我们将文件分割之后(在压缩之前),命令
/sbin/killall -HUP syslogd
会被执行
第二个httpd的日志的例子:
首先,它定义了两个文件的配置文件。这个文件并不是按照天或者星期来执行的,而是根据这两个文件的大小来判断是否需要分割,每次文件达到100K,文件就会被分割,旧的文件会保留5次分割,然后,这些超过5次的文件,会被发送到www@my.org(未压缩的)。而不是被删除。sharedscripts 意味着postrotate脚本只会执行一次,
最后的例子:
最后一个例子是一个每个月执行一次的任务,保留两次的文件,如果出现错误,文件将不会被压缩
Latest posts by Zhiming Zhang (see all)
- aws eks node 自动化扩展工具 Karpenter - 8月 10, 2022
- ReplicationController and ReplicaSet in Kubernetes - 12月 20, 2021
- public key fingerprint - 5月 27, 2021