??随着系统使用时间越长,系统日志/var/log/syslog
也会越来越大,达到几g或十几g,不但占用硬盘空间,且拷贝日志进行分析时也需要较长时间。
对系统日志syslog进行分割,减少系统日志的大小
chmod +x fix_logrotate.sh
sudo ./ fix_logrotate.sh
fix_logrotate.sh
#!/bin/bash
rm -f /var/log/syslog.*
cat >/etc/logrotate.d/rsyslog<<EOF
/var/log/syslog
{
maxsize 20000k
hourly
rotate 4
daily
missingok
notifempty
delaycompress
compress
postrotate
invoke-rc.d rsyslog rotate > /dev/null
endscript
}
/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
rotate 4
maxsize 20000k
hourly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
invoke-rc.d rsyslog rotate > /dev/null
endscript
}
EOF
chmod 644 /etc/logrotate.d/rsyslog
[[ $(grep logrotate /etc/crontab|wc -l) == "0" ]] && echo "*/2 * * * * root /bin/bash /etc/cron.daily/logrotate > /dev/null 2>&1" >> /etc/crontab
cat /etc/crontab
fix_logrotate.sh
脚本的作用是配置日志轮转(logrotate)功能,用于管理系统日志文件的大小和数量,以避免日志文件过大或过多导致磁盘空间不足。#!/bin/bash
: 指定脚本使用的解释器为Bash。rm -f /var/log/syslog.*
: 删除/var/log/syslog开头的所有文件,即删除以syslog开头的日志文件。cat >/etc/logrotate.d/rsyslog<<EOF
: 将下面的内容重定向到/etc/logrotate.d/rsyslog文件中,EOF表示结束符。/var/log/syslog
: 指定要进行日志轮转的日志文件路径。postrotate
: 在轮转后执行的命令。postrotate
invoke-rc.d rsyslog rotate > /dev/null # 调用rsyslog服务的rotate命令进行日志轮转,并将输出重定向到/dev/null,即丢弃输出
endscript
/var/log/mail.info到/var/log/messages
: 同样的配置,指定了其他需要进行日志轮转的日志文件路径。chmod 644 /etc/logrotate.d/rsyslog
: 修改/etc/logrotate.d/rsyslog文件的权限为644,即只有所有者有读写权限,其他用户只有读权限。[[ $(grep logrotate /etc/crontab|wc -l) == "0" ]] && echo "*/2 * * * * root /bin/bash /etc/cron.daily/logrotate > /dev/null 2>&1" >> /etc/crontab
: 检查/etc/crontab文件中是否已经存在logrotate的定时任务,如果不存在,则将定时任务添加到/etc/crontab文件中。该定时任务表示每2分钟执行一次logrotate脚本进行日志轮转,并将输出重定向到/dev/null,即丢弃输出。