我想知道 Linux 中的某些 GUI 进程是否处于空闲或最小化状态,使用Net-SNMP
.
我一直在进行研究,据我所知,SNMP 似乎是为监视服务而设计的,而不是为普通用户运行的进程而设计的。
我只找到了一个 MIB 对象,hrSW运行状态(RFC 2790),只有四种运行状态:跑步(1),可运行(2),不可运行(3)和无效(4),但是通过最大化和最小化某些 GUI 应用程序进行的测试不会显示其各自状态的任何变化,事实上,列出的每个进程snmpwalk
都有可运行(2)状态,除了一个:snmpd
被列为跑步(1)。
# snmpwalk -v 2c -c public localhost .1.3.6.1.2.1.25.4.2.1.7 | grep "running(1)"
HOST-RESOURCES-MIB::hrSWRunStatus.920 = INTEGER: running(1)
# snmpwalk -v 2c -c public localhost .1.3.6.1.2.1.25.4.2.1.2 | grep 920
HOST-RESOURCES-MIB::hrSWRunName.920 = STRING: "snmpd"
即使使用,ps
我也没有看到我目前正在使用的进程的状态发生变化(除了htop
)。如果htop
在终端控制台中运行,就像konsole
我正在用 编写文本kate
,那么这些进程都没有状态“右“(正在运行或可运行),只是”S“(睡眠中断),我觉得很奇怪,但应该是这样的...... https://supportcenter.checkpoint.com/supportcenter/portal?eventSubmit_doGoviewsolutiondetails=&solutionid=sk112953
那么,在 Linux 中,我如何知道某个进程是否空闲或最小化......?
答案1
在评论中,您说您想开发一个时间跟踪应用程序,用于跟踪应用程序的使用情况。我想你可以通过跟踪来做到这一点在任何给定时间哪个窗口是活动窗口。
为此,您需要访问用户的 X11 会话,然后重复查询其名为 的 X11 属性_NET_ACTIVE_WINDOW
。
此代码示例可能对您有帮助: https://github.com/UltimateHackingKeyboard/current-window-linux/blob/master/get-current-window.c
如果系统使用 Wayland 而不是经典的 X11,不幸的是 Wayland 可能需要自己的解决方案;我对那个还不够了解。