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如何查看用户ID号?方法与步骤详解

    在Linux系统中,用户和组的身份标识主要通过ID号来实现,其中用户ID(UID)和组ID(GID)是核心概念,UID用于唯一标识系统中的每个用户,而GID则标识用户所属的组,通过查看这些ID号,可以快速了解用户的权限归属、资源访问控制等信息,本文将详细介绍Linux系统中查看ID号的多种方法,包括核心命令id……

    2025年9月17日
    10900
  • Linux下setenv命令如何正确使用?

    在Linux系统中,环境变量是操作系统和运行程序用来存储配置信息的重要机制,它们以“键=值”的形式存在,影响程序的行为和shell的运行环境,setenv命令是用于设置环境变量的工具之一,但需要注意的是,setenv并非Linux所有shell的内置命令,它主要在C shell(csh)和TENEX C she……

    2025年9月28日
    9200
  • fallocate失败如何用dd创建swap?

    在Linux系统中,虚拟内存通过交换空间(Swap Space)实现,当物理内存(RAM)不足时,系统会将部分闲置数据转移到交换区,避免进程崩溃,以下是增加虚拟内存的详细步骤:检查现有交换空间free -h # 查看内存和交换空间使用情况swapon –show # 显示已激活的交换分区/文件创建交换文件(推……

    2025年6月16日
    12600
  • Linux如何快速挂载Samba共享?

    前置条件安装必要软件包确保系统已安装 cifs-utils(SMB/CIFS 协议支持)和 samba-client(客户端工具):sudo apt update && sudo apt install cifs-utils samba-client # Debian/Ubuntusudo dn……

    2025年8月9日
    10000
  • Linux如何固定IP地址?

    在Linux系统中,固定IP地址是服务器管理、网络服务部署等场景下的基础需求,动态IP虽然方便,但可能导致远程连接中断、服务访问不稳定等问题,本文将以主流Linux发行版(如Ubuntu/Debian和CentOS/RHEL)为例,详细说明固定IP的配置方法,包括传统配置文件方式和现代网络管理工具的使用,并附上……

    2025年9月19日
    11500

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信