私はこの問題に何時間も取り組んできました。 nautilusファイルマネージャーが実行されていない場合、nautilusはデスクトップ上のアイコンを制御するため、実行されています。
$ ps -aux | grep nautilus | grep -v grep
rick 5613 0.2 1.7 2355392 140012 pts/19 Sl+ 19:04 0:08 nautilus
したがって、nautilusファイルマネージャーを開かずにこのコマンドを使用すると、次のように表示されます。
$ ps -L -p 5613 -o pid,Nice,lwp,comm
PID NI LWP COMMAND
5613 0 5613 nautilus
5613 0 5614 gmain
5613 0 5615 gdbus
5613 0 5617 dconf worker
ここで、nautilusファイルマネージャーを開き、ps
コマンドをやり直します。
$ nautilus
$ ps -L -p 5613 -o pid,Nice,lwp,comm
PID NI LWP COMMAND
5613 0 5613 nautilus
5613 0 5614 gmain
5613 0 5615 gdbus
5613 0 5617 dconf worker
5613 0 4788 pool
Nautilusファイルウィンドウを閉じてコマンドを再実行すると(1〜2秒待った後)、プールが消えます。
これは、nautilusファイルマネージャーが実行されているかどうかを確認する正しい方法ですか?
上記のテクニックをAsk Ubuntuの回答に組み込みました。可能であれば改善したいと思います。
Nautilusウィンドウが開いているかどうかを確認する最良の方法は、セッションD-Busでそれらを確認することです。
gdbus introspect --session --dest org.gnome.Nautilus \
--object-path /org/gnome/Nautilus --recurse | awk '/^ *node /{print $2}'
これにより、開いているウィンドウがある場合、/org/gnome/Nautilus/window
の下にウィンドウエントリが表示されます。そう
gdbus introspect --session --dest org.gnome.Nautilus \
--object-path /org/gnome/Nautilus --recurse |
grep -q '^ *node /org/gnome/Nautilus/window/'
開いているウィンドウがある場合は成功し、そうでない場合は失敗します。