如何检查应用程序是否正在 GUI 中运行?

如何检查应用程序是否正在 GUI 中运行?

如果某个程序未打开,我将使用后台脚本来运行另一个 bash 脚本。我看了lsof一下,即使应用程序在后台运行,它也会返回 True。我想检测它是否在 GUI 中打开而不是作为后台进程。干杯

答案1

您可以用来ps查明进程是在前台运行还是在后台运行。

为了快速测试,打开一个 bash shell,假设它的 PID 是13623

firefox & 现在通过并运行在后台启动 Firefox man ps,它将在前台运行。

如果从其他 bash shell 运行:

$ ps -O stat --ppid 13623
PID STAT S TTY          TIME COMMAND
13897 Sl   S pts/4    00:00:02 /usr/lib/firefox/firefox
14079 S+   S pts/4    00:00:00 man ps

--ppid 13623- 为我们提供了在 bash shell 上运行的进程,PID 为 13623

-O stat- 提供 STAT 字段详细信息

+inSTAT表示该进程位于前台。

man位于前台,因此 STAT 是S+

搜索PROCESS STATE CODESinman ps了解更多详情!

相关内容