/var/log/lastlog文件体积过大,如何通过Ubuntu原生方式用logrotate进行轮转?
/var/log/lastlog文件体积过大,如何通过Ubuntu原生方式用logrotate进行轮转?
嘿,这个问题我太熟悉了!首先得给你提个醒:/var/log/lastlog可不是普通的文本日志,它是二进制格式的用户登录记录文件,直接套用普通logrotate规则只会搞乱数据,得用Ubuntu原生的正确姿势来处理。
下面是具体步骤,全是系统自带工具,不用额外装第三方软件:
创建专属的logrotate配置文件
打开终端,运行命令创建配置文件:sudo nano /etc/logrotate.d/lastlog然后把下面的配置内容粘贴进去:
/var/log/lastlog { monthly rotate 3 create 664 root utmp postrotate /usr/bin/lastlog -c endscript }我给你解释下每个参数的作用:
monthly:每月自动轮转一次,你也可以改成weekly(每周)或者daily(每天),根据你的需求调整rotate 3:保留最近3份轮转后的旧日志,超过的会自动删除create 664 root utmp:轮转完成后,自动创建新的lastlog文件,权限和原文件完全一致,避免系统读取出错postrotate块里的lastlog -c:这是Ubuntu原生的命令,专门用来清空并重建lastlog文件——毕竟是二进制文件,直接切割没用,这个命令才是安全重置的正确方式
测试配置并生效
先测试配置有没有语法错误,运行调试命令(不会实际修改文件):sudo logrotate -d /etc/logrotate.d/lastlog如果输出没有报错,就可以手动执行一次轮转,验证效果:
sudo logrotate /etc/logrotate.d/lastlog执行完你再用
ll /var/log/lastlog*看看,就能看到旧的日志被重命名(比如lastlog.1),新的空文件已经创建好了。额外注意事项
- 千万别手动删除或者直接切割
lastlog文件!二进制文件结构特殊,乱改会导致系统无法读取用户登录记录 - 如果需要查看旧的轮转日志,可以用
lastlog -f /var/log/lastlog.1这样的命令来读取
- 千万别手动删除或者直接切割
备注:内容来源于stack exchange,提问作者Tms91
相关产品推荐
相关产品推荐

