命令的手册页描述who
是
who - show who is logged on
但存在一个类似的命令whoami
。的手册页描述whoami
是
whoami - print effective userid
谁能解释一下这些命令到底是做什么的?它们有何不同?
答案1
我以 root 身份登录 shell 并输入who
,这是输出。
who
root tty1 2014-08-25 14:01 (:0)
root pts/0 2014-09-05 10:22 (:0.0)
root pts/3 2014-09-19 10:08 (xxx.xxx.edu)
它有效地显示了已建立连接的所有用户。
ssh ramesh@hostname
再次运行who
将导致用户 ramesh 出现另一个条目。
who
root tty1 2014-08-25 14:01 (:0)
root pts/0 2014-09-05 10:22 (:0.0)
root pts/3 2014-09-19 10:08 (xxx.xxx.edu)
ramesh pts/4 2014-09-19 12:11 (xxx.xxx.edu)
在外壳内root
,我只是执行su ramesh
然后运行whoami
。它会给我当前用户 ramesh 作为输出。
实际上,who
给出了当前登录到机器上的所有用户的列表,whoami
您可以通过该列表了解当前在 shell 中的用户。
答案2
who
:打印当前登录用户的信息。
whoami
:打印运行用户的有效用户名whoami
。
例如:
mohsen@debian:~$ who ## list logged in usernames
mohsen :0 2014-09-19 16:31 (:0)
mohsen pts/0 2014-09-19 16:32 (:0)
mohsen pts/1 2014-09-19 19:42 (:0)
mohsen@debian:~$ whoami
mohsen ##### print my username (mohsen)
mohsen@debian:~$
我还推荐一个比 更好的who
命令w
命令。其输出是:
mohsen@debian:~$ w
21:45:45 up 5:16, 3 users, load average: 0.68, 0.54, 0.46
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
mohsen :0 :0 16:31 ?xdm? 1:40m 0.27s gdm-session-wor
mohsen pts/0 :0 16:32 1.00s 0.15s 0.01s w
mohsen pts/1 :0 19:42 2:03m 0.13s 14.06s /usr/bin/python
也可以看看 :
last
命令/var/log/btmp
和/var/log/wtmp
文件。
答案3
注意who
和之间的区别whoami
。
该who
命令将始终显示您用于登录的帐户(真实用户信息)。
该whoami
命令将显示您的有效用户。
例如,如果您以“blammy”身份登录,则who
和whoami
命令将显示如下内容:
> who
blammy pts/0 2011-04-23 13:43 (123.23.123.123)
> whoami
blammy
这表明用户“blammy”于2011年4月23日13:43从IP“123.23.123.123”登录。
如果您随后运行su - kapow
,则会将有效用户更改为“kapow”。
现在,who
和whoami
命令将显示如下内容:
> who
blammy pts/0 2011-04-23 13:43 (123.23.123.123)
> whoami
kapow
请注意,who
信息保持不变,但whoami
信息根据 su. 发生变化。