Linux命令who am i,who,whoami
今天要說的不是成龍的電影“我是誰”,而是Linux裡的who系列命令,包括
who、whoami和who am i。
www.2cto.com
先看看這三個命令的輸出信息:
[rocrocket@rocrocket ~]$ whoami
rocrocket
[rocrocket@rocrocket ~]$ who am i
rocrocket pts/3 2008-12-30 13:17 (:0.0)
[rocrocket@rocrocket ~]$ who
rocrocket :0 2008-12-30 09:54
rocrocket pts/0 2008-12-30 09:55 (:0.0)
rocrocket pts/1 2008-12-30 09:57 (:0.0)
rocrocket pts/3 2008-12-30 13:17 (:0.0)
當我用sudo su(或者sudo su -)更換到root用戶之後,你再看看:
www.2cto.com
[rocrocket@rocrocket ~]$ sudo su
[root@rocrocket rocrocket]# whoami
root
[root@rocrocket rocrocket]# who am i
rocrocket pts/3 2008-12-30 13:17 (:0.0)
[root@rocrocket rocrocket]# who
rocrocket :0 2008-12-30 09:54
rocrocket pts/0 2008-12-30 09:55 (:0.0)
rocrocket pts/1 2008-12-30 09:57 (:0.0)
rocrocket pts/3 2008-12-30 13:17 (:0.0)
看出區別來了吧,whoami顯示的是當前“操作用戶”的用戶名,而who am i顯示的是“登錄用戶”的用戶名。
用Linux的術語來解釋就是:(實際用戶=uid,即user id。有效用戶=euid,即effective user id)
who am i 顯示的是實際用戶的用戶名,即用戶登陸的時候的用戶ID。此命令相當於who -m。
whoami 顯示的是有效用戶ID. www.2cto.com
好了,明白了兩者區別之後,我們來說說who這個命令。
有人會問,為什麼我sudo su到root之後,who裡面卻沒有顯示呢?
這是因為su過去的用戶進程空間是作為一個子空間存在,他並沒有得到一個登錄的tty。
who這個命令重點是用來查看當前有哪些用戶登錄到了本台機器上。
who -m的作用和who am i的作用是一樣的。
who -q用來顯示當前登錄用戶的個數。
當你覺得who的輸出信息晦澀難懂時,可以使用who -H來輸出,這樣可以在每列加上列名稱,有助於閱讀。