为什么 top 命令向用户显示 who 命令不是?

为什么 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

答案1

您可以通过查看系统的命令行工具及其参数的“手册页”(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

相关内容