Linux 中的 users 命令详解

 更新时间:2026年05月21日 09:16:39   作者:IMPYLH  
users 命令用于显示当前登录到 Linux 系统的所有用户名‌,每个登录会话对应一个用户名显示,直接运行即可查看,本文给大家介绍Linux 的users命令,感兴趣的朋友跟随小编一起看看吧

users 是 Linux 系统中的一个简单但实用的命令行工具,用于显示当前登录到系统的所有用户名。它会从 /var/run/utmp 或 /var/log/wtmp 文件中读取登录记录,并以空格分隔的形式输出所有当前登录用户的用户名。

命令是干什么的

  • 显示登录用户‌:列出当前所有活跃登录会话对应的用户名,输出为一行以空格分隔的用户名列表。
  • 重复显示规则‌:如果一个用户有多个登录会话(如通过多个终端窗口或 SSH 连接登录),该用户名会在输出中重复显示相应次数。
  • 数据来源‌:默认读取系统登录记录文件/var/run/utmp 获取当前登录信息,也可指定其他文件。‌‌‌

命令怎么用

  • 基本语法‌:users [OPTION]...[FILE],方括号内为可选参数。‌‌‌
  • 常用选项‌:
    • --help:显示帮助信息并退出。
    • --version:显示版本信息并退出。‌‌‌
  • 文件参数‌:不指定时读取默认系统文件,也可手动指定其他登录记录文件路径。‌‌‌百科‌

基本语法

users [选项] [文件]

常用选项:

  • --help:显示帮助信息
  • --version:显示版本信息

参数说明:

  • [文件]:指定要读取的登录记录文件,默认为 /var/run/utmp

使用示例

查看当前登录用户

最简单的用法是直接运行 users 命令:

$ users
alice bob charlie alice

输出显示当前有四个登录会话,其中用户 alice 登录了两次(可能从不同终端或会话登录)。

指定登录记录文件

可以指定其他登录记录文件,比如查看历史登录记录:

$ users /var/log/wtmp

这会显示 /var/log/wtmp 文件中记录的所有登录用户(包括历史登录)。

与其他命令结合使用

users 命令的输出通常与其他命令结合使用,进行进一步处理:

# 统计不同用户数量
$ users | tr ' ' '\n' | sort | uniq | wc -l
3
# 查看每个用户的登录次数
$ users | tr ' ' '\n' | sort | uniq -c
      2 alice
      1 bob
      1 charlie

工作原理

users 命令的工作原理相对简单:

  1. 读取登录记录:默认从 /var/run/utmp 文件读取当前登录会话信息
  2. 解析用户信息:从每条记录中提取用户名
  3. 输出结果:将所有用户名以空格分隔的形式输出

相关文件说明:

  • /var/run/utmp:记录当前系统的登录会话信息
  • /var/log/wtmp:记录历史登录/注销信息
  • /var/log/btmp:记录失败的登录尝试

与其他命令的比较

usersvswho

命令输出格式信息详细程度主要用途
users用户名列表(空格分隔)简单,只显示用户名快速查看谁在登录
who每行一个用户,包含终端、时间等详细查看登录会话的详细信息

示例对比:

$ users
alice bob charlie
$ who
alice     tty1         2025-05-20 08:15
bob       pts/0        2025-05-20 08:20 (192.168.1.100)
charlie   pts/1        2025-05-20 08:25 (192.168.1.101)

usersvsw

w 命令显示的信息更加全面,包括用户正在执行的命令和系统负载:

$ w
 08:30:01 up 2 days,  3:15,  3 users,  load average: 0.05, 0.10, 0.15
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
alice    tty1     -                08:15    15:00  0.05s  0.05s -bash
bob      pts/0    192.168.1.100    08:20    0.00s  0.10s  0.05s vim file.txt
charlie  pts/1    192.168.1.101    08:25    5:00   0.03s  0.03s top

实际应用场景

系统监控脚本

在自动化脚本中,可以使用 users 命令快速检查是否有用户登录:

#!/bin/bash
# 检查是否有用户登录
if [ -n "$(users)" ]; then
    echo "有用户登录到系统"
    echo "当前登录用户:$(users)"
else
    echo "没有用户登录"
fi

用户活动统计

结合其他工具进行用户活动分析:

# 统计最近24小时内的活跃用户
$ last -24hours | awk '{print $1}' | sort | uniq
alice
bob
charlie
david
# 与 users 命令结果对比
$ users
alice bob charlie

安全审计

检查异常登录情况:

# 监控非工作时间登录
#!/bin/bash
CURRENT_HOUR=$(date +%H)
if [ $CURRENT_HOUR -lt 8 ] || [ $CURRENT_HOUR -gt 18 ]; then
    LOGGED_USERS=$(users)
    if [ -n "$LOGGED_USERS" ]; then
        echo "非工作时间有用户登录:$LOGGED_USERS"
        echo "时间:$(date)"
        # 可以添加邮件或日志记录逻辑
    fi
fi

注意事项

  1. 权限要求:读取 /var/run/utmp 文件通常需要 root 权限或相应的读取权限
  2. 输出格式:用户名以空格分隔,如果用户名包含空格可能会造成解析困难
  3. 会话计数:同一个用户从多个终端登录会多次出现在输出中
  4. 时间信息:users 命令不显示登录时间,需要结合 who 或 last 命令查看
  5. 网络登录:对于 SSH 等网络登录,users 会显示用户名但不显示来源 IP

总结

users 命令虽然简单,但在日常系统管理和监控中非常有用。它提供了最快捷的方式来查看当前谁登录了系统,特别适合在脚本中快速检查用户登录状态。对于需要更详细信息的场景,可以结合 who、w、last 等命令使用。

记住:简单不代表无用,users 正是 Unix/Linux 哲学"一个工具做好一件事"的完美体现。

到此这篇关于Linux 中的 users 命令详解的文章就介绍到这了,更多相关Linux users 命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • shell脚本之判断输入参数是否为整数值的实例

    shell脚本之判断输入参数是否为整数值的实例

    今天小编就为大家分享一篇shell脚本之判断输入参数是否为整数值的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Git 创建分支提交远程分支详解

    Git 创建分支提交远程分支详解

    这篇文章主要介绍了Git 创建分支提交远程分支详解的相关资料,需要的朋友可以参考下
    2017-04-04
  • getcwd cannot access parent directories错误解决方法

    getcwd cannot access parent directories错误解决方法

    这篇文章主要介绍了getcwd cannot access parent directories错误解决方法,在Linux下执行命令时有时会无意中遇到这个错误,这只是一个意外错误,解决方法很简单,需要的朋友可以参考下
    2015-01-01
  • shell脚本读取命令行参数的实现

    shell脚本读取命令行参数的实现

    本文主要介绍了shell脚本读取命令行参数的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • linux shell实现守护进程脚本

    linux shell实现守护进程脚本

    这篇文章主要介绍了linux shell实现守护进程脚本,非常简单实用的代码,这里推荐给小伙伴。希望大家能够喜欢。
    2015-03-03
  • shell脚本自动安装jdk的方法示例

    shell脚本自动安装jdk的方法示例

    这篇文章主要介绍了shell脚本自动安装jdk的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • linux type命令用法实战教程

    linux type命令用法实战教程

    type命令用来显示指定命令的类型,它是Linux系统的一种自省机制,知道了是那种类型,我们就可以针对性的获取帮助,这篇文章主要介绍了linux type命令用法实战教程,需要的朋友可以参考下
    2023-05-05
  • shell脚本中main函数中$#获取不到脚本传入参数个数浅析

    shell脚本中main函数中$#获取不到脚本传入参数个数浅析

    Linux的shell脚本,有时候我们在运行shell脚本时会给脚本传入参数,出于逻辑上的严谨,在脚本中可能会做一些逻辑判断或处理,例如判断脚本传入参数的个数,这篇文章主要介绍了shell脚本中main函数中$#获取不到脚本传入参数个数浅析,需要的朋友可以参考下
    2024-03-03
  • Shell中的for和while循环详细总结

    Shell中的for和while循环详细总结

    这篇文章主要介绍了Shell中的for和while循环详细总结,本文讲解了for循环的数字段形式、详细列出、对文件进行循环,while循环的三种使用场合等内容,需要的朋友可以参考下
    2015-05-05
  • Shell脚本中获取命令运行结果的实现

    Shell脚本中获取命令运行结果的实现

    本文主要介绍了Shell脚本中获取命令运行结果的实现,除了我们熟知的管道 | 和args,我们也可以通过获取命令的运行结果,本文就来介绍一下,感兴趣的可以了解一下
    2023-10-10

最新评论