前言
前几天整理了w、who、whoami和id这4个命令:查看当前登录用户的信息,介绍了它们的基本用法。不少网友提出疑问:它们都是查看当前登录用户的信息的命令,到底有什么区别?在什么场景下应该选用哪个命令更合适?
接下来,我将梳理一下这4个命令之间的主要区别。如有理解不到位之处,还望大家谅解。
一、w命令
查看“谁”在线上,以及他们在“干什么”。这是信息最丰富、功能最强大的命令。
输出信息:
第一行:当前时间、系统已运行时间、登录用户数、系统负载平均值。
列表行:用户名、终端、登录来源、登录时间、空闲时间、JCPU(该终端所有进程占用的CPU时间)、PCPU(当前进程占用的CPU时间)、以及当前正在运行的命令。
使用场景:作为管理员,你想了解系统负载情况,或者想找出某个用户是否在运行消耗资源的任务。
二、who命令
查看“谁”在线上。这个命令用来查看当前登录系统的用户列表。
核心功能:列出当前登录系统的所有用户会话。
输出信息:通常包括用户名、终端类型、登录时间以及登录来源IP地址。
使用场景:系统管理员想快速查看有哪些用户在线,以及他们是从哪里登录的。
三、whoami命令
只关心“我是谁”。是最简单、最直接的一个命令。
核心功能:只输出当前执行命令的用户。
工作原理:它本质上是“id -un ”命令的别名,直接读取当前进程的用户。
使用场景:当你登录了系统,或者在 su(切换用户)后不确定自己当前是哪个用户时,可以用它来确认身份。
四、id命令
主要关心“我的数字身份”。
核心功能:显示用户的身实身份标识。包括用户id(UID)、组id(GID),以及用户所属的所有组。
使用场景:
1、想知道某个用户的用户id(UDI)或是组id(GID)是多少。
2、想确认一下当前用户是否还有其它组的权限。
3、查看进程的实际用户身份。
五、命令对照表
命令 | 核心功能 | 输出内容 |
w | 谁在系统上以及它们在做什么 | 系统负载、登录用户、空闲时间、当前执行的命令 |
who | 谁登录了系统 | 用户、终端、登录时间、来源IP |
whoami | 当前用户是谁(或我是谁) | 只有自己 |
id | 用户身份id(UID/GID) | UID、GID和所属组列表 |