Linux who命令有哪些核心功能与使用场景?

Linux中的who命令是一个基础且实用的系统工具,主要用于显示当前登录系统的用户信息,它通过读取/var/run/utmp/var/log/wtmp等文件来获取用户登录数据,帮助管理员或用户快速了解系统的使用情况,以下从功能、语法、选项、输出格式及实际应用场景等方面进行详细解析。

linux who命令详解
(图片来源网络,侵删)

基本语法与功能

who命令的基本语法非常简单,直接在终端输入who即可执行,无需额外参数,其核心功能是列出当前所有登录到系统的用户信息,包括用户名、终端设备、登录时间和远程主机地址(如果适用),执行who后可能输出类似内容:

user1  pts/0        2023-10-01 10:30 (192.168.1.100)
user2  tty1         2023-10-01 09:15      :0

每行代表一个登录会话,从左到右依次为用户名、终端类型、登录时间和来源地址。

常用选项及作用

who命令支持多个选项,用于控制输出内容和格式,以下是常用选项的说明:

选项全称功能描述
-a--all显示所有信息,包括idle(空闲时间)和exit(退出时间)
-b--boot显示系统最后一次启动的时间
-d--dead显示已终止的进程(僵尸会话)
-H--heading,便于理解输出结构
-i--idle显示用户终端的空闲时间(等同于-u
-l--login显示登录系统的所有进程,包括未登录的
-m--machine显示与stdout关联的用户信息(类似who am i
-q--count仅显示登录用户数量,并列出用户名
-r--runlevel显示当前系统的运行级别
-s--short默认选项,仅显示用户名、终端和登录时间
-u--users显示用户登录状态和空闲时间
-w--mesg显示用户终端的写入权限状态

示例说明:

  1. who -H:添加列标题,输出更直观:
    USER     TTY        TIME         IDLE    PID  COMMENT
    user1    pts/0      2023-10-01 10:30          1234 (192.168.1.100)
  2. who -u:显示用户空闲时间,表示当前活跃,mm:ss表示空闲时长:
    user1  pts/0        2023-10-01 10:30   .          1234 (192.168.1.100)
    user2  tty1         2023-10-01 09:15   2:30       5678
  3. who -q:快速统计用户数量:
    # users=2
    # user1 user2

输出字段详解

默认情况下,who的输出包含以下字段(以user1 pts/0 2023-10-01 10:30 (192.168.1.100)为例):

linux who命令详解
(图片来源网络,侵删)
  1. USER:登录系统的用户名。
  2. TTY:终端设备名称,tty表示本地物理终端,pts/表示虚拟终端(SSH或telnet等)。
  3. TIME:用户登录的时间,格式为“年-月-日 时:分”。
  4. ADDRESS:远程主机的IP地址(仅对远程登录有效),本地登录时显示为空。

使用-u选项后,会增加以下字段:

  • IDLE:终端空闲时间,表示当前有输入,否则显示空闲时长。
  • PID:登录进程的ID,可用于终止会话(如kill PID)。

实际应用场景

  1. 监控当前用户活动:管理员可以通过who查看谁在线、登录时间和来源地址,及时发现异常登录。who -a可显示系统启动时间和僵尸会话,帮助排查问题。
  2. 排查登录问题:若用户反馈无法登录,可通过who -l查看所有登录进程,确认是否有重复会话或异常进程。
  3. 快速统计用户数who -q适用于需要快速了解在线用户数量的场景,如系统负载监控脚本。
  4. 结合其他命令使用who的输出可管道传递给其他命令,例如who | wc -l统计用户数量,或who | grep user1筛选特定用户信息。

注意事项

  1. 文件依赖who命令依赖/var/run/utmp文件记录当前登录信息,若该文件损坏或丢失,who可能无法正确显示数据。
  2. 权限限制:普通用户只能查看自己的登录信息,而root用户可查看所有用户信息。
  3. 时间格式:登录时间可能因系统设置显示为24小时制或12小时制,需注意区分。

相关问答FAQs

问题1:who命令和w命令有什么区别?
解答:who命令主要用于显示当前登录用户的简要信息(如用户名、终端、登录时间),而w命令在who的基础上增加了更多系统资源使用情况,如CPU负载、进程数、终端空闲时间等。w更适合监控系统资源占用,而who更适合快速查看用户登录状态。

问题2:如何通过who命令查找某个特定用户的登录记录?
解答:可以使用grep命令过滤who的输出,要查找用户user1的登录信息,执行who | grep user1,若需查看历史登录记录(包括已退出的用户),需使用last命令,它会读取/var/log/wtmp文件并显示更详细的登录历史。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/402598.html<

(0)
运维的头像运维
上一篇2025-10-16 04:49
下一篇 2025-10-16 04:56

相关推荐

  • 进程管理器命令有哪些?

    在计算机操作系统中,进程是程序执行的基本单位,而进程管理器则是监控、控制和调度这些进程的核心工具,无论是Windows的任务管理器、macOS的活动监视器,还是Linux系统的top/htop命令,进程管理器都为用户提供了直观的界面和强大的命令行工具,帮助用户了解系统资源使用情况、终止异常进程或优化系统性能,本……

    2025-11-10
    0
  • Informix常用命令有哪些?

    Informix是一款功能强大的关系型数据库管理系统,广泛应用于企业级应用中,掌握其常用命令对于数据库管理员和开发人员来说至关重要,以下将详细介绍Informix数据库的常用命令,包括数据库连接与管理、数据操作、权限控制、性能监控等方面的内容,并通过表格形式辅助说明,最后附上相关问答,在开始操作前,首先需要了解……

    2025-11-09
    0
  • ice命令是什么?

    ice命令是Linux系统中用于管理网络连接和路由表的重要工具,它属于net-tools软件包的一部分,尽管在现代Linux发行版中,iproute2工具包(如ip命令)已逐渐取代其地位,但ice命令在某些场景下仍具有实用价值,本文将详细介绍ice命令的基本用法、常见参数、实际应用场景,并通过表格形式对比其功能……

    2025-10-29
    0
  • CentOS基础命令有哪些必备与实用技巧?

    CentOS作为广泛使用的Linux发行版,其基础命令是系统管理和日常操作的核心,熟练掌握这些命令能极大提升工作效率,文件和目录操作是最常用的,如ls命令用于列出目录内容,加上-l参数可显示详细信息(权限、所有者、大小等),-a则显示隐藏文件;cd命令用于切换目录,cd..返回上级目录,cd-在最近两次目录间切……

    2025-10-28
    0
  • Linux forever命令有何特殊用途?

    在Linux系统中,”linux forever” 并不是一个标准的内置命令或官方工具,而更像是一种社区文化或口号的象征,代表着Linux操作系统的开放精神、持久生命力以及全球开发者的共同信念,如果要将其具象化为一种操作或理念,可以从Linux系统的持久化配置、长期维护策略、社区协作机制等多个维度来解读,确保系……

    2025-10-28
    0

发表回复

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