清理日志文件是Linux系统维护的重要任务之一,以下是几种常用的清理方法:
# 清空单个日志文件(保留文件)
sudo > /var/log/syslog
# 或者
sudo truncate -s 0 /var/log/syslog
# 删除特定目录下超过30天的日志
sudo find /var/log -name "*.log" -type f -mtime +30 -delete
logrotate是Linux自带的日志轮换工具,通常配置在/etc/logrotate.conf
和/etc/logrotate.d/
目录下。
sudo cat /etc/logrotate.conf
sudo ls /etc/logrotate.d/
sudo logrotate -vf /etc/logrotate.conf
/var/log/myapp/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 root adm
sharedscripts
postrotate
/usr/bin/killall -HUP myapp
endscript
}
# 查看当前日志占用空间
journalctl --disk-usage
# 只保留最近2天的日志
sudo journalctl --vacuum-time=2d
# 限制日志最大占用空间(如500M)
sudo journalctl --vacuum-size=500M
可以设置cron任务定期清理日志:
# 编辑crontab
sudo crontab -e
# 添加以下内容(每天凌晨清理)
0 0 * * * find /var/log -name "*.log" -type f -mtime +7 -delete
通过合理配置logrotate和设置清理策略,可以有效地管理系统日志而不会影响系统运行。