在linux服务器运维过程中,了解谁在什么时候登录过系统是一项基础且重要的工作。系统会将用户登录、注销以及重启事件写入特定的日志文件,我们可以借助自带命令轻松查询这些历史记录。

一、使用last命令查看登录历史
last命令从/var/log/wtmp文件中读取数据,显示所有用户的登录和登出记录。基本用法如下:
# 查看所有用户的历史登录记录 last # 只看某个用户的登录记录 last root # 限制显示行数 last -n 10
输出内容包含用户名、终端、来源IP、登录时间和退出时间。如果看到still logged in表示当前仍未退出。
二、使用lastlog查看最近一次登录
lastlog命令读取/var/log/lastlog,为每个用户显示其最后一次登录时间。对于从未登录的账号也会标注。
# 查看所有用户的最近登录情况 lastlog # 查看指定用户 lastlog -u www-data
三、使用who和w命令
who命令读取/var/run/utmp,主要显示当前已登录用户,但结合参数也能辅助判断:
# 显示当前登录用户 who # 显示系统启动时间 who -b
w命令则提供更详细的当前会话资源占用信息。
四、直接检查日志文件
除了上述命令,还可以直接查看认证日志来追溯登录尝试,包括失败记录:
# Debian/Ubuntu系统查看认证日志 grep "session opened" /var/log/auth.log # CentOS/RHEL系统 grep "session opened" /var/log/secure
五、清理与保留策略
wtmp和lastlog文件会持续增长,linux通常通过logrotate定期归档。若需手动清空历史(谨慎操作):
# 清空wtmp,不推荐生产环境随意执行 > /var/log/wtmp
| 命令 | 数据来源 | 主要用途 |
|---|---|---|
| last | /var/log/wtmp | 历史登录会话列表 |
| lastlog | /var/log/lastlog | 每用户最近登录 |
| who | /var/run/utmp | 当前登录用户 |
通过上述方式,你就可以在linux中全面查看过去登陆的用户信息,及时发现潜在风险。
linuxlast_commandutmp_log修改时间:2026-07-25 20:30:16