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

发布时间:2026/11/3 6:53:02

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/11/3 6:52:29

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

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

2026/11/3 6:48:21

AscendC归约临时空间接口

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

2026/11/1 21:19:49

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

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

2026/11/3 6:50:13

TwinCAT 2.0入门实战:从PC控制配置到首个PLC程序跑通

简介:面向倍福CX、CPxxxx、Cxxxx系列控制器用户以及TwinCAT 2.0软件使用者的实践型中文教程,侧重解决从系统配置、PLC编程到硬件连接与通讯调试的入门和进阶问题。教程以上册为主,按系统概述、选型安装、编程入门、开发环境、常用功能、倍福I…

2026/11/3 6:50:13

reverse-skill:面向能力流的技能链诊断与重构方法论

1. 项目概述:这不是“逆向”那么简单,而是技能链的反向解构工程“reverse-skill”这个词乍看像极了“reverse engineering”(逆向工程)的变体,但如果你真把它当成拆软件、扒固件、抠协议的纯技术活儿,那第一…

2026/11/3 6:50:13

Buzz技术原理与工程实践:从信号噪声到交互反馈

我无法基于当前输入生成符合要求的博文。原因在于:您提供的输入内容中,项目标题仅为“buzz”一词,且未提供任何有效上下文——无项目正文(原始描述为空)无关键词列表(仅显示“相关热搜词:最新网…

2026/11/3 6:50:13

TensorFlow生产部署核心指南:从安装避坑到SavedModel交付

1. 这不是“又一个深度学习框架”——TensorFlow 是怎么从实验室走向产线的 你搜“tensorflow”,页面上跳出来的全是安装报错、版本冲突、CUDA不匹配、GPU识别失败……但真正用过三年以上 TensorFlow 的人,心里清楚:它从来就不是为“跑通第一…

2026/11/3 6:50:13

前端渲染技术演进:从CSR到SSR/SSG的实战指南

1. 现代前端渲染的困境与挑战2026年的前端开发环境已经发生了翻天覆地的变化。作为一名经历过多次技术变革的前端工程师,我亲眼目睹了纯客户端渲染(CSR)架构从"银弹"变成"技术债务"的全过程。现在的搜索引擎和AI爬虫对内容抓取的要求越来越严格…

2026/11/3 6:45:12

CS5518规格书解读:MIPI DSI转LVDS带宽预算与点亮调试

简介:CS5518 规格书(datasheet)面向硬件工程师、驱动开发与显示方案设计人员,聚焦 MIPI DSI 转 LVDS 转换芯片的选型与电路设计参考。文档围绕 Capstone CS5518 展开,说明其 MIPI DSI 输入、LVDS 输出架构:…

2026/11/2 6:08:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

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

2026/11/3 1:04:48

STM32实战:基于MAX14431数字隔离器的SPI隔离通信方案

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

2026/11/3 1:04:48

工业SPI隔离通信设计:MAX14431BAEE+与STM32L4A6RG实战

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

2026/11/3 1:04:48

STM32+NRF24L01无线抢答器:硬件设计、通信协议与低功耗实现

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

2026/11/2 6:08:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

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

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

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

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