在CentOS系统中,last命令是管理员常用的工具,用于查看所有用户的登录历史记录,包括登录时间、来源IP、终端信息等,这些记录默认存储在/var/log/wtmp文件中,并以二进制格式保存,随着系统运行时间的增长,该文件会不断累积数据,可能导致磁盘空间占用过高或影响查询效率,定期清理不必要的last记录成为系统维护的重要环节,本文将详细介绍CentOS系统中删除last记录的方法、注意事项及相关操作技巧。

理解last记录的存储机制
last命令读取的/var/log/wtmp文件是一个动态增长的日志文件,记录了所有用户的登录、注销、重启、关机等事件,每次用户通过终端、SSH或本地控制台登录时,系统都会向该文件追加一条记录,由于文件以二进制格式存储,直接编辑是不可行的,必须通过专用工具或系统命令进行管理。last命令还支持读取其他日志文件,如/var/log/btmp(记录失败登录尝试)和/var/log/lastlog(记录每个用户的最后登录时间),这些文件的清理方法与wtmp类似。
删除last记录的常用方法
使用logrotate工具自动清理
CentOS系统默认配置了logrotate工具,用于管理日志文件的轮转和清理,通过修改/etc/logrotate.conf或创建独立的配置文件,可以实现对wtmp文件的定期清理,在/etc/logrotate.d/目录下创建自定义配置文件wtmp如下:
/var/log/wtmp {
monthly
rotate 3
missingok
notifempty
create 0664 root utmp
} 该配置表示每月轮转一次wtmp文件,保留最近3个备份,并创建新的空文件,执行logrotate -f /etc/logrotate.d/wtmp可手动触发清理。
使用truncate命令清空文件
若需立即清空wtmp文件,可通过truncate命令实现,执行以下命令将文件大小截断为0:
sudo truncate -s 0 /var/log/wtmp 此方法会删除所有历史记录,但不会保留备份文件,适用于紧急清理场景,清空后,last命令将显示“wtmp begins”的起始信息。
使用>/dev/null重定向清空
另一种快速清空文件的方法是利用重定向符号,执行以下命令会将空内容写入文件,达到清空目的:

sudo > /var/log/wtmp 此方法与truncate效果类似,但需注意文件权限问题,若提示权限不足,需先确保当前用户具有对文件的写入权限。
手动删除并重建文件
对于需要完全重置日志的情况,可手动删除wtmp文件并重建,步骤如下:
sudo rm /var/log/wtmp
sudo touch /var/log/wtmp
sudo chmod 664 /var/log/wtmp
sudo chown root:utmp /var/log/wtmp 重建后的文件为空,last命令将无历史记录输出。
清理失败登录记录(btmp)
/var/log/btmp文件记录了所有失败的登录尝试,同样可能占用大量磁盘空间,清理方法与wtmp类似,但需使用lastb命令查看记录,清空btmp文件:
sudo truncate -s 0 /var/log/btmp 或通过logrotate配置自动轮转,确保日志文件大小可控。
注意事项
- 备份重要数据:在执行删除操作前,建议备份
wtmp或btmp文件,避免因误删导致审计信息丢失。 - 权限控制:
wtmp和btmp文件通常属于root用户和utmp组,普通用户无法直接修改,需使用sudo提权。 - 审计合规:若系统需满足安全审计要求(如等保合规),需谨慎清理日志,避免违反相关法规。
- 监控影响:清理日志后,可通过
last或lastb命令验证结果,确保操作符合预期。
自动化管理建议
为避免手动操作的繁琐,建议通过cron任务结合logrotate实现自动化管理,在/etc/cron.daily/目录下创建脚本,定期执行日志清理:

#!/bin/bash sudo truncate -s 0 /var/log/wtmp sudo truncate -s 0 /var/log/btmp
赋予执行权限后,系统将每日自动清理日志文件。
相关问答FAQs
A1:不会。wtmp文件主要用于记录登录历史,清空后系统仍可正常处理用户登录,仅影响last命令的查询结果,部分依赖日志的监控工具可能需要重新配置数据源。
A2:可通过ls -l /var/log/wtmp查看文件大小,使用last -f /var/log/wtmp | wc -l统计记录条数,若需实时监控,可结合du和last命令编写脚本定期检查。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复