“w”命令与“WHAT”列相关的行为不一致

“w”命令与“WHAT”列相关的行为不一致

w在两台机器上运行命令。它们都安装了完全相同的系统:Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-87-generic x86_64)。我通过 SSH 在两台机器上以 hans 身份登录。

机器富:

$ w
 13:18:20 up 26 days,  6:02,  1 user,  load average: 0.02, 0.03, 0.01
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
hans     pts/0    10.xxx.xxx.xxx   10:14    1.00s  0.08s  0.00s w

机器栏:

$ w
 13:11:17 up 46 days, 46 min,  1 user,  load average: 0.02, 0.04, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
hans     pts/0    10.xxx.xxx.xxx   10:14    0.00s  0.02s  0.02s sshd: hans [priv]

为什么列中的输出不同WHAT?在 foo 上我看到w,在 bar: 上看到sshd: hans [priv]。这种不对称性从何而来?

答案1

w命令使用启发式方法来决定将哪个进程显示为当前进程。 Linux 手册页没有解释它是如何工作的,但在我的 OS X 系统上它说:

“当前进程”的概念是模糊的。当前的算法是“终端上不忽略中断的最高编号的进程,或者,如果没有,则终端上编号最高的进程”。例如,在 shell 和编辑器等程序的关键部分,或者在后台 fork 中运行的错误程序并且无法忽略中断时,此操作会失败。 (如果找不到进程,则打印 w -。)

那里描述的故障模式可以解释您看到的不一致行为。

相关内容