Process-Management

辨識空閒或最小化程序

  • October 12, 2019

我想知道某些 GUI 程序是否空閒或在 Linux 中最小化,使用Net-SNMP.

我一直在做研究,據我所知,SNMP 似乎是為監控服務而設計的,而不是普通使用者執行的程序。

我發現只有一個 MIB 對象hrSWRunStatus ( RFC 2790 ),它只有四種執行狀態:running(1)runnable(2)notRunnable(3)invalid(4),但通過最大化和最小化一些 GUI 進行測試應用程序不會顯示其各自狀態的任何變化,實際上,列出的每個程序snmpwalk都有runnable(2)狀態,除了一個:snmpd被列為running(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,這些程序都沒有狀態“ R ”(正在執行或可執行),只有“ S ”(可中斷睡眠),我覺得這很奇怪,但是應該是那種方式… https://supportcenter.checkpoint.com/supportcenter/portal?eventSubmit_doGoviewsolutiondetails=&solutionid=sk112953

那麼,在 Linux 中,我怎麼知道某個程序是空閒的還是最小化的……?

在評論中你說你想開發一個時間跟踪應用程序,用於跟踪應用程序的使用情況。我想您可以通過在任何給定時間跟踪哪個視窗是活動視窗來做到這一點。

為此,您需要訪問使用者的 X11 會話,然後反複查詢其名為_NET_ACTIVE_WINDOW.

此程式碼範例可能對您有所幫助: https ://github.com/UltimateHackingKeyboard/current-window-linux/blob/master/get-current-window.c

如果系統使用 Wayland 而不是經典的 X11,不幸的是,Wayland 可能需要自己的解決方案;我只是對那個不夠了解。

引用自:https://unix.stackexchange.com/questions/546419