# 设置磁盘空间监控
df -h | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output;
do
usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 )
partition=$(echo $output | awk '{ print $2 }' )
if [ $usep -ge 90 ]; then
echo "Running out of space \"$partition ($usep%)\" on $(hostname) as of $(date)"
# 发送告警邮件或通知
fi
done
# 示例/etc/logrotate.d/自定义配置
/var/log/myapp.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 root adm
sharedscripts
postrotate
/usr/bin/systemctl reload rsyslog >/dev/null 2>&1 || true
endscript
}
# 尝试修复损坏的日志文件
sudo cp /var/log/syslog /var/log/syslog.bak
sudo journalctl --output=short > /var/log/syslog.new
sudo mv /var/log/syslog.new /var/log/syslog
# 使用journalctl查看系统日志(如果使用systemd)
journalctl -b # 本次启动日志
journalctl -b -1 # 上次启动日志
journalctl --since "2023-01-01 00:00:00" --until "2023-01-02 12:00:00"
# 查看内存中的日志缓存
dmesg # 内核日志
ls /var/log/journal/ # 检查journal日志存储
# 安装extundelete工具(针对ext文件系统)
sudo apt-get install extundelete # Debian/Ubuntu
sudo yum install extundelete # CentOS/RHEL
# 尝试恢复已删除的日志文件
sudo extundelete /dev/sda1 --restore-file /var/log/syslog
实施日志备份策略:
# 示例日志备份脚本
#!/bin/bash
LOG_DIR="/var/log"
BACKUP_DIR="/backup/logs"
DATE=$(date +%Y%m%d)
mkdir -p $BACKUP_DIR/$DATE
cp -r $LOG_DIR/* $BACKUP_DIR/$DATE/
find $BACKUP_DIR -type d -mtime +30 -exec rm -rf {} \;
配置日志冗余存储:
日志服务健康检查:
# 检查日志服务状态
systemctl status rsyslog
journalctl --verify # 验证日志完整性
文件系统完整性检查:
sudo fsck /dev/sda1
通过以上措施,可以有效预防和应对Linux系统中的日志文件丢失与损坏问题,确保系统日志的完整性和可用性。