分割系统日志,解决syslog文件过大的问题
2024-01-07 21:10:59
问题描述
??随着系统使用时间越长,系统日志/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文件解析
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
: 指定要进行日志轮转的日志文件路径。
maxsize 20000k: 设置日志文件的最大大小为20MB。
hourly: 指定日志文件每小时轮转一次。
rotate 4: 保留4个轮转后的日志文件。
daily: 指定日志文件每天轮转一次。
missingok: 如果日志文件不存在,则忽略错误。
notifempty: 如果日志文件为空,则忽略错误。
delaycompress: 延迟压缩轮转后的日志文件。
compress: 压缩轮转后的日志文件。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,即丢弃输出。
文章来源:https://blog.csdn.net/qq_45445740/article/details/135435833
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!