プログラムが開いていない場合は、バックグラウンドスクリプトを使用して別の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
!