Linux用户监控命令users/who/w详解与应用

发布时间:2026/9/12 11:36:54

Linux用户监控命令users/who/w详解与应用 1. Linux用户信息查看命令全景解析在Linux系统管理中了解当前活跃用户是系统管理员的基础技能。users、w和who这三个看似简单的命令实际上构成了Linux用户监控的黄金三角组合。它们各司其职又相互补充就像运维人员的三只眼睛从不同维度透视系统状态。我管理过数百台Linux服务器这三个命令的使用频率高居日常操作前五。特别是在处理多用户环境、排查异常登录或分析系统负载时它们的组合使用往往能快速定位问题根源。不同于需要复杂配置的监控系统这些命令开箱即用在任何Linux发行版上都能提供实时数据。2. 基础命令解析与对比2.1 users命令极简用户清单这个最简单的命令只做一件事——显示当前登录用户的用户名列表。它的输出干净利落每个用户名占一行重复登录会显示多次。在需要快速确认是否有异常用户登录时这种简洁性反而成为优势。$ users john alice john root注意users命令不会显示登录来源或时间等信息适合嵌入脚本中进行快速用户存在性检查2.2 who命令标准登录信息who命令提供了更丰富的信息维度包括用户名登录终端tty/pts登录时间来源IP如果是远程登录典型输出$ who john tty1 2023-08-20 09:30 alice pts/0 2023-08-20 10:15 (192.168.1.100) root pts/1 2023-08-20 11:03 (203.0.113.42)who命令有一个非常有用的变体who -a可以显示所有详细信息包括系统启动时间、运行级别等。我在处理服务器异常重启问题时经常使用这个参数。2.3 w命令综合监控面板w命令是这三个命令中的瑞士军刀它整合了who和uptime的信息并增加了进程级别的数据系统运行时间和平均负载每个登录用户及其进程用户当前活动IDLE表示空闲CPU占用情况示例输出$ w 12:30:45 up 3 days, 4:22, 3 users, load average: 0.15, 0.10, 0.05 USER TTY FROM LOGIN IDLE JCPU PCPU WHAT john tty1 - 09:30 3:00m 0.10s 0.10s -bash alice pts/0 192.168.1.100 10:15 5.00s 0.20s 0.05s sshd: alice [priv] root pts/1 203.0.113.42 11:03 1:00 0.30s 0.30s top3. 高级应用场景3.1 安全审计实战这三个命令组合使用可以构建基础的安全审计方案首先用users快速检查是否有异常用户名然后通过who确认登录来源最后用w分析用户活动我曾在某次安全事件中使用以下命令链发现异常$ who | grep -vE (192.168|localhost)这个命令过滤出来自内网以外的所有登录成功捕捉到攻击者的SSH连接。3.2 性能问题排查当服务器负载突然升高时w命令的最后一列WHAT特别有用$ w | awk NR2{print $8} | sort | uniq -c | sort -nr这个管道可以统计当前运行的所有命令及其出现次数快速定位消耗资源的进程。3.3 自动化监控脚本在编写监控脚本时这三个命令各有用途# 检查用户数是否超过阈值 if [ $(users | wc -w) -gt 10 ]; then echo 警告用户数超标 | mail -s 用户警报 adminexample.com fi # 记录异常登录 who | awk $3 !~ /^:/ {print $1,$3,$5} /var/log/remote_logins.log4. 技术细节深度解析4.1 数据来源探究这些命令的数据都来自/var/run/utmp文件当前登录信息和/var/log/wtmp历史登录记录。理解这点很重要因为直接解析这些文件可以获得更灵活的数据文件权限问题可能导致命令失效日志轮转会影响历史数据查询我常用的utmpdump工具可以直接查看这些二进制文件内容$ utmpdump /var/run/utmp4.2 时间格式处理who和w命令显示的时间可能因系统配置而异。要获得统一格式可以设置LC_ALL环境变量$ LC_ALLC who这在编写跨区域脚本时特别重要。4.3 网络连接追踪对于pts终端我们可以进一步追踪其网络连接$ lsof -i -n | grep $(who | grep pts | awk {print $NF} | tr -d )()这个命令组合可以显示所有远程登录用户的完整网络连接信息。5. 常见问题解决方案5.1 命令输出不一致有时users和who显示的用户数不一致通常是因为users统计所有登录会话包括图形界面who可能过滤了某些终端类型解决方案是统一使用参数$ who -u $ users --version # 确认版本差异5.2 时间显示问题当系统时区配置错误时登录时间可能显示异常。修复方法$ timedatectl set-timezone Asia/Shanghai $ hwclock --systohc5.3 强制注销用户发现可疑用户时可以用pkill命令终止其会话$ pkill -9 -u username然后通过/var/log/secure日志分析登录过程。6. 性能优化技巧6.1 减少系统调用在频繁执行的监控脚本中直接读取utmp比调用who命令更高效#!/bin/bash { echo Users: $(users | wc -w) echo Load: $(awk {print $1,$2,$3} /proc/loadavg) } /tmp/system_status6.2 日志轮转配置合理配置wtmp轮转可以平衡历史数据和磁盘空间# /etc/logrotate.conf /var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 12 }6.3 自定义输出格式使用awk处理who命令输出生成定制化报告$ who | awk BEGIN{print Active Sessions Report\n} {printf User: %-8s From: %-15s When: %s\n, $1, $5, $3}7. 扩展应用场景7.1 容器环境监控在Docker/Kubernetes环境中这些命令同样适用# 在容器内执行 $ who $ w但需要注意容器可能使用精简版系统缺少某些命令用户信息可能来自宿主机的映射7.2 自动化运维集成结合Ansible等工具实现自动化用户监控- name: Check active users hosts: all tasks: - name: Get user count command: who | wc -l register: user_count - name: Alert if users 3 mail: to: adminexample.com subject: High user count on {{ inventory_hostname }} body: {{ user_count.stdout_lines }} users logged in when: user_count.stdout|int 37.3 安全合规检查满足等保要求中的用户会话监控#!/bin/bash # 记录所有root登录 who -u | grep ^root /var/log/root_access.log # 检查空密码登录 grep password not required /var/log/secure | awk {print $NF} | sort -u8. 命令历史与发展8.1 传统Unix实现最早的who命令出现在1971年的Unix V1中功能极为基础。随着多用户系统发展逐渐增加了终端类型、登录时间等字段。8.2 Linux各发行版差异不同发行版可能有细微差别CentOS: who命令支持-H显示标题行Ubuntu: w命令默认显示更详细的负载信息Alpine: 精简版可能缺少users命令8.3 现代替代方案虽然这些命令仍然有效但现代系统也提供了其他选择$ loginctl list-sessions $ last -a9. 实用脚本合集9.1 登录用户监控脚本#!/bin/bash # monitor_users.sh MAX_USERS5 LOG_FILE/var/log/user_monitor.log current_users$(who | wc -l) timestamp$(date %Y-%m-%d %H:%M:%S) echo [$timestamp] Current users: $current_users $LOG_FILE if [ $current_users -gt $MAX_USERS ]; then echo WARNING: User threshold exceeded! $LOG_FILE who $LOG_FILE # 发送警报邮件 echo User count $current_users exceeds max $MAX_USERS | \ mail -s User Alert adminexample.com fi9.2 异常登录检测#!/bin/bash # check_logins.sh ALLOWED_IPS(192.168.1.* 10.0.0.*) who -u | while read -r line; do ip$(echo $line | grep -oE \([^)]\) | tr -d ()) if [[ -n $ip ]]; then allowed0 for range in ${ALLOWED_IPS[]}; do if [[ $ip $range ]]; then allowed1 break fi done if [ $allowed -eq 0 ]; then echo Suspicious login: $line /var/log/suspicious_logins.log fi fi done9.3 用户活动报告#!/bin/bash # user_report.sh REPORT_FILE/tmp/user_activity_$(date %Y%m%d).csv echo User,Login Time,Idle Time,Process $REPORT_FILE w -h | awk {print $1,$4,$5,$8} $REPORT_FILE # 发送报告 mail -s Daily User Activity Report -a $REPORT_FILE adminexample.com /dev/null10. 性能考量与最佳实践10.1 大型系统优化在用户数超过100的系统中避免频繁执行who/w命令改用utmp直接读取考虑使用缓存机制限制历史记录保留时间10.2 日志管理建议定期归档/var/log/wtmp使用logrotate管理日志大小敏感信息应脱敏处理10.3 安全加固措施保护utmp/wtmp文件权限chmod 644 /var/run/utmp /var/log/wtmp chown root:utmp /var/run/utmp /var/log/wtmp监控关键文件变更inotifywait -m -e modify /var/run/utmp /var/log/wtmp使用auditd记录特权操作auditctl -w /var/run/utmp -p wa -k user_sessions
延伸阅读

更多相关文章

2026/9/12 11:36:05

Mac外接显示器时如何优雅关闭内屏

1. 为什么需要关闭Mac内屏? 作为一名长期使用MacBook Pro配合外接显示器的用户,我深刻理解这个需求的痛点。当我们将MacBook连接到外接显示器时,默认情况下系统会保持内屏和外屏同时工作。这种双屏模式虽然提供了更多工作空间,但也…

2026/9/8 7:49:53

AscendC归约临时空间接口

GetSumMaxMinTmpSize 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gi…

2026/9/8 3:07:52

STM32智能定时风扇设计:从定时器原理到PWM控制实战

传统风扇最大的痛点是什么?不是风力不够,而是缺乏智能控制——要么整夜开着浪费电,要么半夜热醒还得手动开关。基于STM32的智能定时风扇设计正是为了解决这个核心痛点,它让风扇从简单的机械开关升级为能够自主决策的智能设备。这个…

2026/9/12 11:35:32

古诗词网 - 独属于中国人的浪漫!

古诗词网 - 独属于中国人的浪漫 一个全新的古诗词网站,收录海量诗词古文名句,提供完整的译文注释、创作背景、诗词赏析、拼音朗读、诗人简介等资料,感受中国人独有的浪漫与魅力,看古人如何写尽春夏秋冬、风花雪月、爱恨情仇、励志…

2026/9/12 11:35:32

SpringBoot+Vue高校食堂智能推荐系统设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/12 11:35:32

GPT-4o结构化数据生成实战:三列表格/JSON/Markdown稳定输出方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/12 11:35:32

办公Agent实测:QwenWork与ChatGPT、Claude、扣子横向对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/12 11:30:32

AI论文写作工具测评:提升本科生论文效率的10款神器

1. 本科生论文写作痛点与工具需求分析 写毕业论文是每个本科生都要经历的"成人礼",但现实中90%的学生都会遇到相似的困境:开题没方向、文献找不到、格式总出错、查重过不了。去年指导学弟学妹时,我发现他们平均要花200小时在论文格…

2026/9/12 2:05:33

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/12 3:55:12

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/12 10:09:03

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/12 0:04:17

MATLAB仿生优化框架:长鼻浣熊算法多策略融合实现

简介:本资源是一份面向智能优化算法研究者与MATLAB初学者的仿生智能算法实践代码包,聚焦于长鼻浣熊优化算法(COA)的多策略改进与性能验证。针对传统COA易陷局部最优、收敛精度不足等问题,作者融合Circle映射初始化提升…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 JavaWeb 的校园一卡通管理系统的设计与实现 基于 JavaWeb 的校园卡业务管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 Java 的图书馆借阅管理平台的搭建与实现 基于 Java 的图书馆综合管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/10 15:19:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/12 6:37:43

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码