如果某个程序未打开,我将使用后台脚本来运行另一个 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 CODES
inman ps
了解更多详情!