根据Unix who命令的定义,定义“行活动”

什么构成“活动”为Unix的“谁”命令的目的? 我们正在试图find闲置的会议,但对于这方面活动的确切含义有分歧。 一个人认为活动时间只能通过用户input来重置 – 也就是从标准input进入会话的数据。 其他人说任何CPU活动。 一个权威的答案将是有用的。

 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.00sw 

S.0:我正在检查的那个,所以绝对是0。

S.1:我打开了一个壳。 在按下某个键的两秒钟之前,不按input。 所以,即使没有线路回报,任何收到的input都可以工作

S.2:我跑得while true; do echo "foo"; sleep 30; done while true; do echo "foo"; sleep 30; done while true; do echo "foo"; sleep 30; done 。 我甚至在中间键入了一个字符。 由于input被封锁(从来没有读过),我仍然在那里闲置。

结论

从terminalinput读取字符时,空闲时间将被重置。 被阻止的input不会更新空闲时间,即使它影响屏幕显示。 应用程序可能根据不同的规则更 例如,我使用了按行读取input的write ,所以只有在按下回车键后才更新我的空闲时间。 perl也是如此(字面上像perl没有参数地执行)。

进程一直运行,空闲时间无关紧要。

如果你做一个:

 while true; do w; sleep 0.1; done 

在一个terminal中,打开另一个terminal,只有当用户input某个东西(按下一个键)时,您才会看到该另一个会话的空闲时间被重置为零。 如果你运行:

 while true; do ls; done 

在另一个terminal的空闲时间将继续上升。

所以只有当会话读取用户input时,空闲计时器才会被重置。