日志文件总管logrotate

logrotate官网

简介

logrotate是个十分有用的工具,它可以自动对日志进行截断、轮循、压缩以及删除旧的日志文件。配置完后,logrotate的运作完全自动化,不必进行任何人为干预。 配置文件通常在/etc/logrotate.conf中,独立配置通常在/etc/logrotate.d/下。

配置

/var/log/mysql.log /var/log/mysql/*log {
        daily
        rotate 7
        missingok
        create 640 mysql adm
        compress
        sharedscripts
        postrotate
                test -x /usr/bin/mysqladmin || exit 0
                MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
                if [ -z "`$MYADMIN ping 2>/dev/null`" ]; then
                  if killall -q -s0 -umysql mysqld; then
                    exit 1
                  fi 
                else
                  $MYADMIN flush-logs
                fi
        endscript
}

手动运行

logroute -f /et/logrotate.conf

定时任务

logrotate需要的cron任务应该在安装时就自动创建了:/etc/cron.daily/logrotate

root@iZ2ze8wsk0m120dsi7m0juZ:/# cat /etc/cron.daily/logrotate 
#!/bin/sh

# Clean non existent log file entries from status file
cd /var/lib/logrotate
test -e status || touch status
head -1 status > status.clean
sed 's/"//g' status | while read logfile date
do
    [ -e "$logfile" ] && echo "\"$logfile\" $date"
done >> status.clean
mv status.clean status

test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf

logrotate自身日志在/var/lib/logrotate/status

root@iZ2ze8wsk0m120dsi7m0juZ:/# cat /var/lib/logrotate/status 
logrotate state -- version 2
"/var/log/messages" 2018-3-14-6:0:0
"/var/log/user.log" 2018-3-14-6:0:0
"/var/log/apt/history.log" 2018-3-1-6:25:1
"/var/log/nginx/error.log" 2018-3-10-6:25:2
"/var/log/alternatives.log" 2018-3-1-6:25:1
"/var/log/debug" 2018-3-14-6:0:0
"/var/log/php7.0-fpm.log" 2018-3-14-6:0:0
"/var/log/wtmp" 2018-3-1-6:25:1
"/var/log/apache2/other_vhosts_access.log" 2017-5-17-6:0:0
"/var/log/ufw.log" 2018-3-14-6:0:0
"/var/log/mysql/slow.log" 2018-3-14-6:25:1
"/var/log/syslog" 2018-3-14-6:25:1
"/var/log/mail.log" 2018-3-11-6:25:1
"/var/log/php7.1-fpm.log" 2018-3-14-6:0:0
"/var/log/apt/term.log" 2018-3-1-6:25:1
"/var/log/unattended-upgrades/unattended-upgrades.log" 2018-3-1-6:25:1
"/var/log/mysql/error.log" 2018-3-14-6:25:1
"/var/log/mongodb/mongodb.log" 2018-3-11-6:25:1
"/var/log/kern.log" 2018-3-4-6:25:1
"/var/log/apache2/error.log" 2017-6-20-6:25:1
"/var/log/php7.2-fpm.log" 2018-3-11-6:25:1
"/var/log/mail.info" 2018-3-14-6:0:0
"/var/log/lpr.log" 2018-3-14-6:0:0
"/var/log/mysql.log" 2018-3-14-6:0:0
"/var/log/php5.6-fpm.log" 2018-3-14-6:0:0
"/var/log/nginx/access.log" 2018-3-10-6:25:2
"/var/log/daemon.log" 2018-3-14-6:0:0
"/var/log/mail.warn" 2018-3-14-6:0:0
"/var/log/fail2ban.log" 2018-3-11-6:25:1
"/var/log/btmp" 2018-3-1-6:25:1
"/var/log/apache2/access.log" 2017-6-20-6:25:1
"/var/log/mail.err" 2018-3-14-6:0:0
"/var/log/cron.log" 2018-3-14-6:0:0
"/var/log/dpkg.log" 2018-3-1-6:25:1
"/var/log/auth.log" 2018-3-11-6:25:1
"/var/log/unattended-upgrades/unattended-upgrades-shutdown.log" 2017-12-25-6:0:0
"/var/log/unattended-upgrades/unattended-upgrades-dpkg.log" 2018-3-1-6:25:1
"/var/log/ppp-connect-errors" 2018-3-14-6:0:0
"/var/log/tomcat8/catalina.out" 2018-3-11-6:25:1