Linux
為什麼 top 命令向使用者顯示 who 命令不是?
在 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
++Alt
)F2
,- 或偽終端(
pts
例如用於 SSH 會話、終端仿真器或終端多路復用器程序)還有其他方法可以啟動不涉及登錄會話的程序,例如
- 系統服務(由
init
、systemd
或您的系統用於服務啟動的任何內容啟動)- 未請求 tty 設備的 SSH 會話——這通常發生在您在 SSH 呼叫 (
ssh example.com rsync …
) 之後直接給出命令而不是請求互動式 shell (ssh example.com
)- 從登錄會話啟動程序,然後將其從目前 shell 中分離,從而會話(例如使用
disown
)切線地,如果您想知道系統上存在哪些使用者(來自本地配置的使用者
/etc/passwd
和來自 LDAP 等外部數據庫的任何使用者):getent passwd
如果您還想知道他們上次登錄的時間:
lastlog