アプリケーションがGUIで実行されているかどうかを確認する方法は?

アプリケーションがGUIで実行されているかどうかを確認する方法は?

プログラムが開いていない場合は、バックグラウンドスクリプトを使用して別のbashスクリプトを実行します。確認すると、lsofアプリがバックグラウンドで実行されている場合でもTrueを返します。バックグラウンドプロセスではなくGUIで開くかどうかを検出したいと思います。乾杯

答え1

これを使用して、psプロセスがフォアグラウンドまたはバックグラウンドで実行されているかどうかを確認できます。

クイックテストのために、PIDが次のようになると仮定してbashシェルを開きます。13623

firefox & Firefoxをバックグラウンドで実行して実行するman psと、前景で実行されます。

別のbashシェルで実行している場合:

$ 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- PID 13623 を使用して bash シェルで実行されるプロセスを提供します。

-O stat- STATフィールドの詳細を提供

+in は、STATプロセスがフォアグラウンドにあることを示します。

manが前景にあるのでSTATはS+

詳しくは検索してPROCESS STATE CODESみてくださいman ps

関連情報