定义 Unix who 命令所理解的“线路活动”

定义 Unix who 命令所理解的“线路活动”

对于 Unix 的“who”命令来说,“活动”是指什么?我们试图找到空闲会话,但对于此上下文中活动的确切含义存在分歧。有人认为活动时间只能通过用户输入重置 - 即从标准输入进入会话的数据。其他人则认为任何 CPU 活动都可以。权威的答案会很有用。

答案1

USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
jferland pts/2    jferland:S.1     10:35    2.00s  0.18s  0.18s /bin/bash
jferland pts/3    jferland:S.2     10:35   45.00s  0.18s  0.00s sleep 30
jferland pts/1    jferland:S.0     10:35    0.00s  0.21s  0.00s w

S.0:我正在检查,所以那里的时间肯定是 0。

S.1:我打开了一个 shell。两秒钟前我按下了一个键,但没有按回车键。因此,即使没有回车,收到的任何输入都可以正常工作。

S.2:我运行了while true; do echo "foo"; sleep 30; done。我甚至在中间输入了一个字符。由于输入被阻止(从未读取),我仍然在那里闲置。

结论

当从终端输入读取字符时,空闲时间会被重置。即使被阻止的输入确实会影响屏幕显示,也不会更新空闲时间。应用程序可能会根据不同的规则进行更新。例如,我使用了按行读取输入的命令,因此它只会在按下回车键时更新我的​​空闲时间。 (按字面意思执行为没有参数)write也是如此。perlperl

答案2

进程始终在运行,空闲时间并不重要。

如果你做了:

while true; do w; sleep 0.1; done

在一个终端中,然后打开另一个终端,您将看到另一个会话的空闲时间被重置为零,只有当用户输入某些内容(按下某个键)时才重置。如果您运行:

while true; do ls; done

在另一个终端,空闲时间将继续增加。

因此仅当会话读取用户输入时,空闲计时器才会重置。

相关内容