Users
w
、who
、whoami
和 id
的不同輸出
在線上命令行平台中,例如 Codecademy 上的平台,當我執行時
for cmd in w who whoami id do echo $cmd $cmd echo ========================= echo " " done
我明白了
w 00:52:54 up 8 days, 14:10, 0 users, load average: 3.78, 2.98, 2.69 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT ========================= who ========================= whoami ccuser ========================= id uid=1000(ccuser) gid=1000(ccuser) groups=1000(ccuser) =========================
注意只有
whoami
和id
輸出一些東西。當我在我的電腦上執行相同的東西時,我看到所有命令的結果都相似。為什麼 Codecademy 不向使用者顯示
w
andwho
?這些命令有什麼不同?
id
報告
- 其自身流程的目前憑證;或者
- 命名使用者的憑據,從系統帳戶數據庫中讀出。
whoami
報告其自身程序的目前憑據。
who
並w
從登錄數據庫報告活動登錄會話表。BSD doco 指出,
whoami
它完成了 的工作的子集id
,並id
使其過時。系統不必具有活動的登錄會話表。在 Linux 作業系統和 BSD 上,如果表沒有在引導時創建,或者從那以後被刪除,系統將在沒有表的情況下執行。此外,登錄和註銷不會在 Linux 作業系統上隱式創建它。
此外,非特權使用者不需要讀取該表,並且命令
who
或w
命令都不會將此報告為錯誤。進一步閱讀
- 喬納森·德博因·波拉德 (2018)。Unix 登錄數據庫。經常給出答案。
- 喬納森·德博因·波拉德 (2018)。“登錄更新utmpx ”。 使用者命令。nosh 工具集。
- Lennart Poettering 等人。(2018 年)。
systemd-update-utmp.service
. systemd 手冊頁。自由桌面.org。- login-shell 是否需要創建 utmp 條目?
- https://unix.stackexchange.com/a/409036/5132