アプリケーションのプロセス名を確認するにはどうすればよいですか?


13

これが状況です:

Unityクイックリストエディター(の次のバージョン)に取り組んで、ランチャーアイコンを「再起動」する信頼できる方法を追加したいと思います。そのためには、アイコンを削除し(gsettingsを編集)、同じ位置でそれを置き換える必要があります。これまでのところ問題ありません。ただし、問題のアプリケーションが実行されている場合、アイコンがランチャーから削除されるとアプリケーションが終了するため、ユーザーはデータを失う可能性があります。私は必要なのは、アプリケーションが実行されている場合は、実行中のプロセスをリストで編集チェックをしましょう、とアイコンが再起動できないことをユーザーに警告メッセージを送信するために、アプリケーションのプロセス名を見つけるための信頼性の高い方法である場合、アプリケーションがありますランニング。

これまでに行ったことは、エディターがデスクトップファイルを調べてコマンドを読み取り、ディレクトリセクションからストリップされたコマンドを読み取り、さらにデスクトップファイルコマンドが参照する可能性のあるリモートスクリプトを調べて、開始文字列を探すことです「./」で

この方法は、私がテストしたすべてのアプリケーションでうまく機能するように見えますが、「オールインワン」の方法で問題をカバーする簡単な方法があるはずだと感じています...

ある?

また、より例外的な状況をキャッチする提案も歓迎します!


アイコンがランチャーから削除されたときにアプリケーションが終了するのはなぜですか?ランチャーに固定されていないアプリケーションを終了すると、アイコンが削除されますが、アイコンを削除するとアプリケーションが終了するのはなぜですか?
エリアケイガン

@Eliah:終了は....アプリケーションは、単にクラッシュ、おそらく正しい表現ではありません
ジェイコブVlijm

@JacobVlijmだから、これはUnity特有の権利ですか?Unityにはすでにそのためのメカニズムがあります。要件は何ですか?psxprop出力と同じプロセス名を知るだけですか?
セルギーKolodyazhnyy

@Serg .desktopファイルから「計算された」プロセス名。これは必ずしもWM_CLASSではありません。WM_CLASSは、アプリケーション内から設定できます。
ジェイコブVlijm

@JacobVlijmああ、あなたが始めたと仮定するfirefox.desktopと、PID 1234でfirefoxを起動しますが 、WM_CLASS「Firefoxではありません」のようなものに変更されました。.desktopただし、ファイルは変更されません。に関係なく、PID 1234に添付された名前を取得しWM_CLASSます。私は何をする必要があるかを正確に理解していると思います。しかし、あなたは私の最初の質問に答えませんでした-それがUnityだけのものなら大丈夫ですか?
セルギーKolodyazhnyy

回答:


3

一般的な場合、これを解決する方法はありません。どのようなメカニズムを考え出しても、プロセスを最初から起動する方法を変更して追跡しない限り、いつでもプロセスを書くことができると信じています。

Upstartは、デーモンがまだ実行中かどうかを追跡するためにまったく同じ問題に対処する必要があり、upstartジョブの作成者は、upstartが追跡する詳細(フォークの数)を指定する必要があります。新興企業が助けなしでは管理できないことを考えると、私もあなたができるとは思いません。そして、新興企業はプロセスの起動方法を制御することさえできます。

あなたができる最善のことは、あなたがすでにやっていることだと思います。見てみる/proc/<pid>/stat/proc/<pid>/cmdline合理的に一般的な方法ですが、それでもすべてのケースをキャッチしません。pgrepコマンドはこれをラップします。まだを使用していない場合pgrepは、pgrepのマンページで、一致させることができるもののオプションを確認してください。

すべてを言ったが、私はあなたが本当に最初にこれをする必要があると確信していない。プロセスを追跡できない場合は、Unityでこれを実行する方法もわかりません。そもそもアプリケーションのクラッシュを排除する方が良いでしょうか?あなたが説明したようにそれを回避しようとするのではなく、あなたのアプリケーションがクラッシュする理由の詳細を調べます(確かにそれはどこかにバグですか?)。これは、DBusを介した追加機能のためにUnityにコールバックするUnity対応アプリケーションにのみ影響するのだろうか?


徹底的な回答ありがとうございます!詳細(特に最後の段落)を調べます。100%の解決策が見つからない場合は、おそらく「実験」オプションとしてアイコン「再起動」機能を提供します。幸いなことに、その間、使用したメソッドに例外は見つかりませんでした。もう一度ありがとう!
ジェイコブVlijm

1

xpropコマンド(関連するアプリのウィンドウにAlt + Tabキーが続くが、その後、ウィンドウ内で一度クリックしてください)私のためにトリックを行うようです。


WM_CLASS多くの場合、プロセス名と一致しますが、必ずとは限りません。ウィンドウを定義(コーディング)して、必要なものを指定できますWM_CLASS。さまざまなプロセスから実行されるウィンドウを作成して、1つのランチャーアイコンにグループ化することさえ、自分で行いました。
ジェイコブVlijm

ああ。残念です。最後に免責事項を追加する価値がありました。これは、オペレーティングシステムに組み込まれることを本当に期待していた機能であり、その方法がわからないだけだと思いました。少なくとも、「A​​bout」の情報を期待しています。
el_gallo_azul
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.