菜鸟科技网

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

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

Linux who命令有哪些核心功能与使用场景?-图1
(图片来源网络,侵删)

基本语法与功能

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命令有哪些核心功能与使用场景?-图2
(图片来源网络,侵删)
  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文件并显示更详细的登录历史。

分享:
扫描分享到社交APP
上一篇
下一篇