Linux系统如何查看当前在线用户数量?

Linux系统中,用户管理是系统运维的基础操作之一,准确掌握系统中用户的状态和数量对于安全管控、资源分配等至关重要,Linux提供了多种命令和工具来查询用户信息,包括当前登录用户、系统总用户数、活跃用户等,不同场景下需要选择合适的命令,本文将详细介绍这些查询方法,并结合实际示例和表格对比,帮助用户全面掌握Linux系统中查看用户数量的技巧。

linux如何查还有多少用户

查看当前登录系统的用户数量

当前登录系统的用户数量是最常用的查询需求,通常指通过终端、SSH等方式正在与系统交互的用户,Linux提供了多个命令来实现这一功能,每个命令的输出格式和详细信息略有不同。

使用who命令查看当前登录用户

who是Linux中最基础的查看登录用户信息的命令,它会显示当前所有登录用户的用户名、终端设备、登录时间和来源IP地址。

基本语法

who [选项]

常用选项

  • -u:显示用户的空闲时间(若用户长时间无操作,会显示idle时间);
  • -q:只显示用户名和登录数量,简洁输出;
  • -H:显示列标题,便于阅读。

示例

who -H

输出可能如下:

NAME     LINE         TIME         IDLE  PID  COMMENT
user1    pts/0        2023-10-01 10:30          1234  (192.168.1.100)
user2    pts/1        2023-10-01 11:15    5:00 1235  (192.168.1.101)
root     pts/2        2023-10-01 09:00          1236  (192.168.1.102)

NAME为用户名,LINE为终端设备(pts/0表示虚拟终端),TIME为登录时间,IDLE为空闲时间,PID为进程ID,COMMENT为来源IP。

若仅需快速查看用户数量,可使用who -q

who -q

输出:

user1 user2 root
# 总计 3 个用户

使用w命令查看当前登录用户及活动状态

w命令是who的增强版,除了显示用户基本信息外,还会展示系统负载、当前用户执行的命令等,适合需要了解用户活动场景的情况。

基本语法

w [选项] [用户名]

常用选项

  • -h:不显示标题行;
  • -s:简洁模式,不显示用户执行的命令;
  • -u:显示用户的空闲时间、CPU时间等详细信息。

示例

w

输出可能如下:

 10:35:01 up 10 days,  2:30,  3 users,  load average: 0.05, 0.03, 0.01
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
user1    pts/0    192.168.1.100   10:30    5:00   0:02   0:01 vim
user2    pts/1    192.168.1.101   11:15    0:00   0:01   0:00 top
root     pts/2    192.168.1.102   09:00   2:30m  0:05   0:03 sshd

USER为用户名,TTY为终端,FROM为来源IP,LOGIN@为登录时间,IDLE为空闲时间,JCPU为进程占用CPU总时间,PCPU为当前命令占用CPU时间,WHAT为当前执行的命令。

若仅查看特定用户,可加上用户名,如w user1

使用users命令快速查看登录用户列表

users命令是最简单的查看登录用户的命令,仅输出所有登录用户的用户名列表(重复用户名会多次出现),适合快速统计登录用户数量。

基本语法

users

示例

users

输出:

user1 user2 root

若需统计唯一用户数量,可通过管道结合sortuniq处理:

linux如何查还有多少用户

users | tr ' ' 'n' | sort | uniq -c | sort -nr

输出:

1 root
1 user2
1 user1

查看系统中创建的总用户数量

除了当前登录用户,有时需要了解系统中创建的所有用户(包括未登录的用户),Linux系统中的用户信息存储在/etc/passwd文件中,每行代表一个用户,包含用户名、加密密码(通常为x)、UID(用户ID)、GID(主组ID)、描述信息、家目录、登录Shell等信息。

直接统计/etc/passwd文件行数

/etc/passwd文件的行数即为系统中创建的用户总数(包括系统用户和普通用户)。

命令

cat /etc/passwd | wc -l

或直接使用wc -l

wc -l /etc/passwd

示例

wc -l /etc/passwd

输出:

40 /etc/passwd

表示系统中总共有40个用户。

区分系统用户和普通用户

Linux用户分为系统用户(用于运行系统服务,UID通常小于1000)和普通用户(可登录系统的用户,UID通常大于等于1000),若需统计普通用户数量,可通过awk过滤/etc/passwd文件。

命令

awk -F: '$3 >= 1000 {print}' /etc/passwd | wc -l

解释:-F:表示以冒号为分隔符,$3表示第三列(UID),筛选UID大于等于1000的用户,统计行数。

示例

awk -F: '$3 >= 1000 {print}' /etc/passwd | wc -l

输出:

35

表示系统中普通用户数量为35个。

使用getent查询用户(支持NIS等远程用户数据库)

若系统使用了NIS(网络信息服务)、LDAP等远程用户数据库,/etc/passwd可能不包含所有用户信息,此时需使用getent命令查询配置的数据库(如passwd)。

命令

getent passwd | wc -l

或筛选普通用户:

getent passwd | awk -F: '$3 >= 1000 {print}' | wc -l

查看活跃用户(最近有登录记录的用户)

活跃用户指最近一段时间内有登录记录的用户,可通过lastlastlog命令查询。

使用last命令查看登录历史

last命令读取/var/log/wtmp文件(记录所有登录和注销信息),显示用户的登录历史。

基本语法

last [选项] [用户名]

常用选项

linux如何查还有多少用户

  • -n:显示最近n条记录,如last -n 10显示最近10条;
  • -x:显示关机、重启等事件。

示例

last -n 5

输出可能如下:

user1   pts/0        192.168.1.100   Mon Oct  2 10:30   still logged in
user2   pts/1        192.168.1.101   Mon Oct  2 11:15   - down   (00:05)
root    pts/2        192.168.1.102   Mon Oct  2 09:00   - down   (02:30)
reboot   system boot  5.4.0-91-generic Mon Oct  2 09:00   - 10:35 (1+01:35)

统计最近有登录记录的用户(排除reboot等系统事件):

last | grep -v "reboot" | awk '{print $1}' | sort | uniq -c | sort -nr

使用lastlog查看每个用户的最后登录时间

lastlog读取/var/log/lastlog文件,显示每个用户的最后登录时间,适合判断用户是否为“僵尸用户”(从未登录或长期未登录)。

基本语法

lastlog [选项] [用户名]

常用选项

  • -u:指定用户ID,如lastlog -u 1000
  • -t:指定天数,如lastlog -t 30显示最近30天登录的用户。

示例

lastlog | grep "Never"

输出:

user3     **Never logged in**
user4     **Never logged in**

表示user3user4从未登录过。

统计最近30天有登录记录的用户:

lastlog -t 30 | awk '$NF != "Never" {print}' | wc -l

常用查看用户数量命令总结

为方便用户快速选择合适的命令,以下通过表格对比常用命令的功能、示例和适用场景:

命令 功能描述 示例输出 适用场景
who -q 显示登录用户名及数量 user1 user2 root # 总计 3 个用户 快速统计当前登录用户数量
w 显示登录用户及活动状态 包含用户名、终端、来源IP、执行命令 需了解用户活动详情时
users 显示登录用户列表 user1 user2 root 快速查看登录用户名列表
wc -l /etc/passwd 统计系统总用户数 40 /etc/passwd 查看系统中所有创建的用户数量
awk -F: '$3 >= 1000 {print}' /etc/passwd | wc -l 统计普通用户数量 35 区分系统用户和普通用户时
getent passwd | wc -l 查询远程数据库中的用户总数 45 系统使用NIS/LDAP等远程服务时
last -n 10 显示最近10条登录记录 包含用户名、来源IP、登录时间 查看用户登录历史
lastlog | grep "Never" 查看从未登录的用户 user3 **Never logged in** 识别僵尸用户

相关问答FAQs

Q1:为什么users命令显示的用户数和实际登录用户数不一致?

A:users命令会输出所有登录用户的用户名列表,若同一用户通过多个终端登录(如用户A通过pts/0pts/1同时登录),users会重复显示该用户名,若用户A登录了两个终端,users输出可能为A A B,此时实际登录用户数为2(A和B),但users显示3个名称,若需统计唯一用户数量,可通过users | tr ' ' 'n' | sort | uniq -c | wc -l处理。

Q2:如何判断一个用户是否为系统用户?

A:Linux中通常通过UID(用户ID)区分系统用户和普通用户:

  • 系统用户:UID一般小于1000(如UID为0的root,UID为1的daemon等),用于运行系统服务,通常无法直接登录;
  • 普通用户:UID一般大于等于1000,可正常登录系统。

可通过以下命令查看用户UID:

id -u 用户名

查看root用户的UID:

id -u root

输出为0,表示系统用户;查看普通用户user1的UID:

id -u user1

若输出为1000,则为普通用户。

Linux系统中查看用户数量的方法多样,需根据具体需求选择合适的命令:当前登录用户用whowusers;系统总用户数用wc -l /etc/passwdgetent passwd;活跃用户用lastlastlog,掌握这些命令及其组合使用,能有效提升系统用户管理的效率和准确性。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/36992.html

(0)
酷番叔酷番叔
上一篇 2025年10月6日 12:52
下一篇 2025年10月6日 13:20

相关推荐

  • 不学Linux,你会错过什么?

    系统学习路径(分阶段实践指南)阶段1:基础认知与操作(1-2周)理解Linux本质学习开源理念、内核与发行版区别(如Ubuntu/CentOS/Debian的定位)明确命令行(CLI)与图形界面(GUI)的应用场景环境搭建零风险方案:使用VirtualBox/VMware创建虚拟机(推荐Ubuntu LTS版……

    2025年7月29日
    7300
  • linux下如何用python文件

    Linux下,使用Python文件可通过终端运行,如python3 script.py(script.

    2025年8月15日
    5800
  • 双核CPU+4G内存真能流畅运行?

    Linux开发系统是程序员、运维工程师和开源贡献者的核心工具,它提供高度可定制的环境、强大的命令行工具和与开发栈的无缝集成,本文将详细指导你从零搭建专业级Linux开发环境,涵盖系统安装、环境配置、开发工具链部署及安全加固,所有步骤均通过实际验证,外设:支持UEFI启动的电脑、USB驱动器(≥8GB)选择Lin……

    2025年7月28日
    6700
  • Linux线程切换如何实现流畅共享CPU?

    线程切换的本质线程切换(上下文切换)是内核调度器将CPU从一个线程转移到另一个线程的过程,涉及:保存当前线程状态:包括寄存器值、程序计数器、栈指针等,加载目标线程状态:恢复目标线程的寄存器和执行位置,调度决策:根据优先级、时间片等策略选择下一个运行的线程,关键点:切换由内核调度器自动触发,无需用户手动干预,每次……

    2025年7月25日
    5700
  • Linux如何查看系统UUID?

    在Linux系统中,UUID(Universally Unique Identifier,通用唯一标识符)是用于唯一标识存储设备、文件系统或分区的128位标识符,具有全局唯一性,即使设备名称变化(如/dev/sda1变为/dev/sdb1),UUID仍能保持不变,因此常用于挂载配置(如/etc/fstab)中……

    2025年10月1日
    3000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信