在Linux系统中,清理系统日志是一个重要的维护任务,有助于释放磁盘空间并保护系统安全。以下是清理系统日志的步骤:
sudo nano /etc/logrotate.d/custom_logs
/var/log/*.log {
size=10M # 当日志达到10M时进行轮换
rotate 2 # 保留2个归档文件
compress # 压缩旧的日志文件
missingok # 如果日志丢失,不报错
notifempty # 如果日志为空,不轮换
create 0644 root root # 创建新日志文件的权限和所有者
dateext # 使用日期作为归档文件的扩展名
}
sudo nano /usr/local/bin/cleanup_logs.sh
#!/bin/bash
# 删除7天前的压缩日志文件
find /var/log -name "*.gz" -type f -mtime +7 -delete
# 删除30天前的日志文件
find /var/log -name "*.log.*" -type f -mtime +30 -delete
# 清空大于50M的当前日志文件
for logfile in $(find /var/log -type f -size +50M); do
echo "" > "$logfile"
done
# 强制执行日志轮换
sudo logrotate -f /etc/logrotate.conf
sudo logrotate -f /etc/logrotate.conf
sudo nano /etc/systemd/journald.conf
[Journal]
SystemMaxUse=100M # 日志总体积上限
SystemMaxFileSize=20M # 单个日志文件大小上限
MaxRetentionSec=2592000 # 日志保留时间(30天)
Compress=yes # 启用压缩
Storage=persistent # 持久化存储
ForwardToSyslog=yes # 转发到 syslog
journalctl --vacuum-size=100M
journalctl --vacuum-time=30d
sudo chmod +x /usr/local/bin/cleanup_logs.sh
sudo crontab -e
0 2 * * * /usr/local/bin/cleanup_logs.sh
0 3 * * * journalctl --vacuum-size=100M
du -sh /var/log/
find /var/log -type f -exec du -sh {} ; | sort -hr
journalctl --disk-usage
sudo tar -czf /home/backup_logs_$(date +%Y%m%d).tar.gz /var/log/
通过以上步骤,你可以有效地管理和清理Linux系统日志,确保系统的稳定运行和安全监控。