登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
Linux 如何统计系统上各个用户登录(或者登出)记录出现 ...
Linux 如何统计系统上各个用户登录(或者登出)记录出现的次数?
[ 复制链接 ]
柴古香
2025-7-27 01:11:10
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
命令
last | grep -v "^$" | awk '{ print $1 }' | sort -nr | uniq -c
复制代码
逐段解析
last
从 /var/log/wtmp(或者对应的系统登录日志)中读取并列出最近的登录、重启、关机等记录。
每行开头通常是用户名,例如:
alice pts/0 192.168.1.5 Tue Jul 22 10:15 still logged in
bob tty1 Mon Jul 21 09:00 - 17:00 (08:00)
reboot system boot 5.11.0-27-generic Tue Jul 22 09:00
复制代码
grep -v "^$"
^$ 匹配“空行”。
-v 表示“取反”,也就是去掉所有空行。
这样做主要是防止后面处理时碰到空行导致多余的空白用户名。
awk '{ print $1 }'
将每一行按空白(空格或制表符)拆分字段,$1 就是第 1 个字段——用户名(或者特殊条目如 reboot、shutdown 等)。
输出后的结果是一列用户名,例如:
alice
alice
bob
reboot
alice
复制代码
sort -nr
sort 用来对前一步的用户名列表进行排序。
-n 按“数值”排序,-r 倒序(从大到小)。
虽然此处每行都是字符串用户名,不是纯数字,但 sort -nr 会尝试把整行当数字比较,遇到非数字时效果可能与 sort -r 接近(把“字母行”视作 0 排在后面)。
这里本意是先把相同用户名聚在一起(任何 sort 都可);如果想按照出现次数倒序,应该在 uniq -c 后再加一次 sort -nr。
uniq -c
uniq 用来把相邻的相同文本行合并,并加上出现次数。
-c 选项会在每行前面打印该行重复的次数。
例如,将上面的用户名列表:
alice
alice
alice
bob
reboot
复制代码
经过 uniq -c 会得到:
3 alice
1 bob
1 reboot
复制代码
整体作用
读取登录记录 → last
去掉空行 → grep -v "^$"
提取用户名 → awk '{print $1}'
(先行)排序以便于计数 → sort
统计每个用户名出现的次数 → uniq -c
典型应用场景:
找出最活跃的用户
检测异常频繁登录(如暴力破解)
审计系统访问情况
统计服务器用户活动频率
最终输出形如:
123 alice
45 bob
10 charlie
2 reboot
复制代码
表示 alice 的登录/登出记录出现了 123 次,以此类推。可以进一步在输出后面再加一个 | sort -nr,就能让出现次数多的用户排在最上面,更直观地看到“谁最常登录”:
last | grep -v "^$" | awk '{print $1}' | sort | uniq -c | sort -nr
复制代码
这样就完成了从登录记录到按频率排名的全流程统计。
对于大型系统,可以使用更高效的工具组合:
last -w | cut -d' ' -f1 | grep -v '^$' | sort | uniq -c | sort -nr
复制代码
-w:显示完整用户名(避免截断)
cut -d' ' -f1:比 awk 更轻量级的字段提取工具
实用场景:
安全审计:检测异常登录行为
# 检查root登录
last | grep -v "^$" | awk '$1=="root"{print}' | wc -l
复制代码
排除系统账户(仅统计真实用户):
last | grep -v -E "^(reboot|wtmp|^$)" | awk '{print $1}' | sort | uniq -c | sort -nr
复制代码
按时间段统计:
# 统计本月登录
last -s $(date +%Y-%m-01) | grep -v "^$" | awk '{print $1}' | sort | uniq -c | sort -nr
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
Linux
如何
统计
系统
各个
相关帖子
VonaJS是如何做到文件级别精确HMR(热更新)的?
Flink源码阅读:如何生成StreamGraph
深入理解Linux IPIP隧道:原理、配置与实战
人工智能如何改变 Anthropic 的工作方式
从繁琐到高效:招聘自动化系统优化招聘流程的关键步骤
alist如何将默认布局设置为图片布局
Flink源码阅读:如何生成JobGraph
一文读懂RAG架构如何助力AI
一文读懂RAG架构如何助力AI
Flink源码阅读:如何生成ExecutionGraph
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
VonaJS是如何做到文件级别精确HMR(热更新)的?
1
414
济曝喊
2025-12-17
业界
Flink源码阅读:如何生成StreamGraph
0
354
梁丘艷蕙
2025-12-18
业界
深入理解Linux IPIP隧道:原理、配置与实战
0
773
申屠梓彤
2025-12-18
安全
人工智能如何改变 Anthropic 的工作方式
1
217
诀锺
2025-12-18
安全
从繁琐到高效:招聘自动化系统优化招聘流程的关键步骤
1
486
蒋炸役
2025-12-19
业界
alist如何将默认布局设置为图片布局
0
612
筒霓暄
2025-12-20
业界
Flink源码阅读:如何生成JobGraph
0
731
钨哄魁
2025-12-20
业界
一文读懂RAG架构如何助力AI
0
745
董绣梓
2025-12-21
业界
一文读懂RAG架构如何助力AI
0
500
康器
2025-12-21
业界
Flink源码阅读:如何生成ExecutionGraph
0
758
唯棉坜
2025-12-21
回复
(1)
乃阕饯
2025-10-15 04:38:24
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
过来提前占个楼
钦娅芬
2025-10-27 00:46:16
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢发布原创作品,程序园因你更精彩
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
业界
签约作者
程序园优秀签约作者
发帖
柴古香
2025-10-27 00:46:16
关注
0
粉丝关注
22
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994892
kk14977
6845358
4
xiangqian
638210
5
韶又彤
9997
6
宋子
9981
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9949
查看更多
今日好文热榜
375
NGD-SLAM(三)
42
AI 领域职业发展分享总结(吴恩达新课内容
99
【面试题】数据库事务隔离与传播属性是什么
187
2025年儿童羽绒服十大名牌排名:宝妈选购指
310
2025年儿童羽绒服十大名牌排名:宝妈选购指
757
Flink源码阅读:如何生成ExecutionGraph
417
Github项目CI&CD部署
313
AgentScope深入分析-LLM&MCP
597
《痞子衡嵌入式半月刊》 第 120 期
626
go项目使用go build 与 MakeFile 构建项目
765
监控指标与容量预警——延迟、命中率、慢查
673
2026 年别墅防水服务商 TOP5 推荐:高端住
963
MAUI库推荐二:MPowerKit
962
.NET10 New feature 新增功能介绍-JIT编译
404
报考陪诊师选守嘉陪诊的理由
272
C#AI系列(7):从零开始LLM之Tokenizer实现
286
C#AI系列(7):从零开始LLM之Tokenizer实现
827
Pytest 测试用例自动生成:接口自动化进阶
848
一天一个Python库:NumPy - 科学计算的基石
16
FFmpeg 内存输入&输出