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如何查看当前系统的网络连接状态详情?

    在Linux系统中,查看网络连接状态是系统管理和故障排查的核心操作之一,通过分析连接信息可以识别端口占用、异常连接、网络性能等问题,Linux提供了多种命令和工具来查看连接,涵盖TCP、UDP、Unix域套接字等不同类型,本文将详细介绍这些方法及其应用场景,使用netstat命令查看连接netstat是传统的网……

    2025年9月30日
    1400
  • 如何添加selinux权限

    chcon命令临时更改文件SELinux上下文,或编辑`/etc/selinux

    2025年8月19日
    4100
  • 修改Linux防火墙规则?firewalld/ufw/iptables全指南

    修改前的关键准备备份现有规则 sudo iptables-save > ~/iptables_backup.txt # iptables备份sudo cp /etc/ufw/user.rules ~/ufw_backup.rules # ufw备份查看当前规则 sudo firewall-cmd –li……

    2025年8月8日
    3000
  • Linux编辑器退出必知技巧?

    Vi/Vim 编辑器退出方法Vi/Vim 是Linux最经典的文本编辑器,需掌握模式切换:命令模式(按 Esc 进入):执行保存、退出等指令插入模式(按 i 进入):编辑文本操作场景按键步骤说明保存并退出Esc → :wq → Enter保存更改并退出强制保存(只读文件)Esc → :wq! → Enter管理……

    2025年7月16日
    4200
  • Linux查看U盘方法全指南

    命令行方式(通用性强,适用于所有发行版)识别U盘设备插入U盘后,打开终端(Ctrl+Alt+T),执行:lsblk输出示例:NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 238.5G 0 disk├─sda1 8:1 0 512M 0 part /boot……

    2025年8月6日
    3800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信