插件窝 干货文章 怎样用Linux命令清理日志文件

怎样用Linux命令清理日志文件

logrotate 日志 清理 文件 450    来源:    2025-05-04

Linux日志文件清理方法

清理日志文件是Linux系统维护的重要任务之一,以下是几种常用的清理方法:

1. 手动清理方法

清空日志文件

# 清空单个日志文件(保留文件)
sudo > /var/log/syslog
# 或者
sudo truncate -s 0 /var/log/syslog

删除旧日志文件

# 删除特定目录下超过30天的日志
sudo find /var/log -name "*.log" -type f -mtime +30 -delete

2. 使用logrotate工具(推荐)

logrotate是Linux自带的日志轮换工具,通常配置在/etc/logrotate.conf/etc/logrotate.d/目录下。

检查logrotate配置

sudo cat /etc/logrotate.conf
sudo ls /etc/logrotate.d/

手动执行logrotate

sudo logrotate -vf /etc/logrotate.conf

示例logrotate配置

/var/log/myapp/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 0640 root adm
    sharedscripts
    postrotate
        /usr/bin/killall -HUP myapp
    endscript
}

3. journalctl清理系统日志(适用于systemd系统)

# 查看当前日志占用空间
journalctl --disk-usage

# 只保留最近2天的日志
sudo journalctl --vacuum-time=2d

# 限制日志最大占用空间(如500M)
sudo journalctl --vacuum-size=500M

4. 定时任务自动清理

可以设置cron任务定期清理日志:

# 编辑crontab
sudo crontab -e

# 添加以下内容(每天凌晨清理)
0 0 * * * find /var/log -name "*.log" -type f -mtime +7 -delete

注意事项

  1. 清理前确认日志不再需要
  2. 重要的业务日志建议备份后再清理
  3. 某些服务可能需要重启才能继续写入日志
  4. 不要直接删除/var/log目录下的文件,而是清空内容
  5. 对于正在使用的日志文件,清空比重命名/删除更安全

通过合理配置logrotate和设置清理策略,可以有效地管理系统日志而不会影响系统运行。