users是 Linux 系统中的一个简单但实用的命令行工具用于显示当前登录到系统的所有用户名。它会从/var/run/utmp或/var/log/wtmp文件中读取登录记录并以空格分隔的形式输出所有当前登录用户的用户名。基本语法users [选项] [文件]常用选项--help显示帮助信息--version显示版本信息参数说明[文件]指定要读取的登录记录文件默认为/var/run/utmp使用示例查看当前登录用户最简单的用法是直接运行users命令$usersalice bob charlie alice输出显示当前有四个登录会话其中用户alice登录了两次可能从不同终端或会话登录。指定登录记录文件可以指定其他登录记录文件比如查看历史登录记录$users/var/log/wtmp这会显示/var/log/wtmp文件中记录的所有登录用户包括历史登录。与其他命令结合使用users命令的输出通常与其他命令结合使用进行进一步处理# 统计不同用户数量$users|tr \n|sort|uniq|wc-l3# 查看每个用户的登录次数$users|tr \n|sort|uniq-c2alice1bob1charlie工作原理users命令的工作原理相对简单读取登录记录默认从/var/run/utmp文件读取当前登录会话信息解析用户信息从每条记录中提取用户名输出结果将所有用户名以空格分隔的形式输出相关文件说明/var/run/utmp记录当前系统的登录会话信息/var/log/wtmp记录历史登录/注销信息/var/log/btmp记录失败的登录尝试与其他命令的比较usersvswho命令输出格式信息详细程度主要用途users用户名列表空格分隔简单只显示用户名快速查看谁在登录who每行一个用户包含终端、时间等详细查看登录会话的详细信息示例对比$usersalice bob charlie $whoalice tty12025-05-20 08:15 bob pts/02025-05-20 08:20(192.168.1.100)charlie pts/12025-05-20 08:25(192.168.1.101)usersvsww命令显示的信息更加全面包括用户正在执行的命令和系统负载$ w 08:30:01 up2days,3:15,3users, load average:0.05,0.10,0.15USERTTY FROM LOGIN IDLE JCPU PCPU WHAT alice tty1 - 08:1515:000.05s0.05s-bashbob pts/0192.168.1.100 08:200.00s0.10s0.05svimfile.txt charlie pts/1192.168.1.101 08:255:000.03s0.03stop实际应用场景系统监控脚本在自动化脚本中可以使用users命令快速检查是否有用户登录#!/bin/bash# 检查是否有用户登录if[-n$(users)];thenecho有用户登录到系统echo当前登录用户$(users)elseecho没有用户登录fi用户活动统计结合其他工具进行用户活动分析# 统计最近24小时内的活跃用户$ last-24hours|awk{print $1}|sort|uniqalice bob charlie david# 与 users 命令结果对比$usersalice bob charlie安全审计检查异常登录情况# 监控非工作时间登录#!/bin/bashCURRENT_HOUR$(date%H)if[$CURRENT_HOUR-lt8]||[$CURRENT_HOUR-gt18];thenLOGGED_USERS$(users)if[-n$LOGGED_USERS];thenecho非工作时间有用户登录$LOGGED_USERSecho时间$(date)# 可以添加邮件或日志记录逻辑fifi注意事项权限要求读取/var/run/utmp文件通常需要 root 权限或相应的读取权限输出格式用户名以空格分隔如果用户名包含空格可能会造成解析困难会话计数同一个用户从多个终端登录会多次出现在输出中时间信息users命令不显示登录时间需要结合who或last命令查看网络登录对于 SSH 等网络登录users会显示用户名但不显示来源 IP总结users命令虽然简单但在日常系统管理和监控中非常有用。它提供了最快捷的方式来查看当前谁登录了系统特别适合在脚本中快速检查用户登录状态。对于需要更详细信息的场景可以结合who、w、last等命令使用。记住简单不代表无用users正是 Unix/Linux 哲学一个工具做好一件事的完美体现。
Linux 的 users 命令
发布时间:2026/5/21 21:42:05
users是 Linux 系统中的一个简单但实用的命令行工具用于显示当前登录到系统的所有用户名。它会从/var/run/utmp或/var/log/wtmp文件中读取登录记录并以空格分隔的形式输出所有当前登录用户的用户名。基本语法users [选项] [文件]常用选项--help显示帮助信息--version显示版本信息参数说明[文件]指定要读取的登录记录文件默认为/var/run/utmp使用示例查看当前登录用户最简单的用法是直接运行users命令$usersalice bob charlie alice输出显示当前有四个登录会话其中用户alice登录了两次可能从不同终端或会话登录。指定登录记录文件可以指定其他登录记录文件比如查看历史登录记录$users/var/log/wtmp这会显示/var/log/wtmp文件中记录的所有登录用户包括历史登录。与其他命令结合使用users命令的输出通常与其他命令结合使用进行进一步处理# 统计不同用户数量$users|tr \n|sort|uniq|wc-l3# 查看每个用户的登录次数$users|tr \n|sort|uniq-c2alice1bob1charlie工作原理users命令的工作原理相对简单读取登录记录默认从/var/run/utmp文件读取当前登录会话信息解析用户信息从每条记录中提取用户名输出结果将所有用户名以空格分隔的形式输出相关文件说明/var/run/utmp记录当前系统的登录会话信息/var/log/wtmp记录历史登录/注销信息/var/log/btmp记录失败的登录尝试与其他命令的比较usersvswho命令输出格式信息详细程度主要用途users用户名列表空格分隔简单只显示用户名快速查看谁在登录who每行一个用户包含终端、时间等详细查看登录会话的详细信息示例对比$usersalice bob charlie $whoalice tty12025-05-20 08:15 bob pts/02025-05-20 08:20(192.168.1.100)charlie pts/12025-05-20 08:25(192.168.1.101)usersvsww命令显示的信息更加全面包括用户正在执行的命令和系统负载$ w 08:30:01 up2days,3:15,3users, load average:0.05,0.10,0.15USERTTY FROM LOGIN IDLE JCPU PCPU WHAT alice tty1 - 08:1515:000.05s0.05s-bashbob pts/0192.168.1.100 08:200.00s0.10s0.05svimfile.txt charlie pts/1192.168.1.101 08:255:000.03s0.03stop实际应用场景系统监控脚本在自动化脚本中可以使用users命令快速检查是否有用户登录#!/bin/bash# 检查是否有用户登录if[-n$(users)];thenecho有用户登录到系统echo当前登录用户$(users)elseecho没有用户登录fi用户活动统计结合其他工具进行用户活动分析# 统计最近24小时内的活跃用户$ last-24hours|awk{print $1}|sort|uniqalice bob charlie david# 与 users 命令结果对比$usersalice bob charlie安全审计检查异常登录情况# 监控非工作时间登录#!/bin/bashCURRENT_HOUR$(date%H)if[$CURRENT_HOUR-lt8]||[$CURRENT_HOUR-gt18];thenLOGGED_USERS$(users)if[-n$LOGGED_USERS];thenecho非工作时间有用户登录$LOGGED_USERSecho时间$(date)# 可以添加邮件或日志记录逻辑fifi注意事项权限要求读取/var/run/utmp文件通常需要 root 权限或相应的读取权限输出格式用户名以空格分隔如果用户名包含空格可能会造成解析困难会话计数同一个用户从多个终端登录会多次出现在输出中时间信息users命令不显示登录时间需要结合who或last命令查看网络登录对于 SSH 等网络登录users会显示用户名但不显示来源 IP总结users命令虽然简单但在日常系统管理和监控中非常有用。它提供了最快捷的方式来查看当前谁登录了系统特别适合在脚本中快速检查用户登录状态。对于需要更详细信息的场景可以结合who、w、last等命令使用。记住简单不代表无用users正是 Unix/Linux 哲学一个工具做好一件事的完美体现。