Linux

為什麼 top 命令向使用者顯示 who 命令不是?

  • December 1, 2018

在 Raspberry Pi 2 上工作,執行 Raspbian GNU/Linux 9 (stretch)。

我只是想了解為什麼,當我執行top命令時,我可以看到一些我在命令中看不到的使用者who。這是在 RPi 上執行的命令的輸出:

$ top
top - 12:36:42 up 2 days, 15:19,  2 users,  load average: 0.29, 0.34, 0.27
Tasks: 138 total,   1 running,  73 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.0 us,  0.9 sy,  0.0 ni, 97.0 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem :   949460 total,   354296 free,    62916 used,   532248 buff/cache
KiB Swap:   102396 total,    30972 free,    71424 used.   811488 avail Mem

 PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
10907 iceman    20   0    6144   3400   1924 S   2.3  0.4   4:05.37 rsync
10876 maverick  20   0    8128   3300   2740 R   1.6  0.3   0:36.49 top
 376 root      20   0  911240   9648   3164 S   0.7  1.0  31:58.38 dockerd
 663 root      20   0  149932   1728   1020 S   0.7  0.2  28:25.48 Xorg
 674 root      20   0  884620   3848   1764 S   0.7  0.4  22:06.18 docker-co


$ who
maverick   pts/0        2018-11-28 11:23 (73.69.181.86)
maverick   pts/1        2018-11-28 11:58 (73.69.181.86)

為了澄清,我試過了:who, who -u, who -l, who -p, who -a.

man who您可以通過查看它們的“手冊頁”(例如,通過執行)找到有關係統命令行工具及其參數的更多資訊。


從各自的手冊頁:

top- 顯示 Linux 程序

who- 顯示誰登錄

當我們這樣做時,還有:

w- 顯示誰登錄以及他們在做什麼。

使用者在執行“登錄”時即為“登錄”,即他們已提供密碼或密鑰以向系統進行身份驗證,並且系統已為他們啟動了“會話”。

如您所見,who只列出了這些登錄會話——通常與會話所附加的內容一起列出,例如

  • 一個 Xserver 會話(例如:0,對於第一個圖形會話),
  • 一個終端(tty,例如Ctrl++ AltF2
  • 或偽終端(pts例如用於 SSH 會話、終端仿真器或終端多路復用器程序)

還有其他方法可以啟動不涉及登錄會話的程序,例如

  • 系統服務(由initsystemd或您的系統用於服務啟動的任何內容啟動)
  • 未請求 tty 設備的 SSH 會話——這通常發生在您在 SSH 呼叫 ( ssh example.com rsync …) 之後直接給出命令而不是請求互動式 shell ( ssh example.com)
  • 從登錄會話啟動程序,然後將其從目前 shell 中分離,從而會話(例如使用disown

切線地,如果您想知道系統上存在哪些使用者(來自本地配置的使用者/etc/passwd和來自 LDAP 等外部數據庫的任何使用者):

getent passwd

如果您還想知道他們上次登錄的時間:

lastlog

引用自:https://unix.stackexchange.com/questions/484651