2

Linux でシステム モニターと呼ばれるものに似たプロジェクトに取り組んでいます。opensuse 11.4 gnome を使用しています。システムで現在実行中のすべてのアプリケーションを一覧表示するコマンド (ps を除く) があるかどうか疑問に思っていました。マルチコア環境向けに開発しています。

たとえば、私は Firefox で Web を閲覧していて、同時に Google Chrome を使用していて、さらにテキスト ファイル内のテキストを編集しています。このシナリオでは、プロジェクトを開くときに、現在実行中のすべてのアプリケーションのリストが必要です [私のシナリオでは、gEdit、Google Chrome、および Firefox の名前 (ただし、これら 3 つのアプリが生成したプロセスではない) をリストとして表示する必要があります]

必要な出力は、Windows でタスク マネージャーを使用するときに [アプリケーション] タブに表示されるものと同じです。

誰かが解決策を持っている場合は、非常に高く評価されることをお知らせください。プロジェクトの実装に netbeans を使用しています。ありがとう!!!

4

4 に答える 4

2

これを実現する簡単な方法はないと思います。Linux では、アプリケーションは起動時にいくつかのプロセスを作成する場合があります。たとえば、postfix を見てみましょう。

localhost:~ # ps -ef|grep ポストフィックス
 root 3708 1 0 Apr24 ? 00:00:35 /usr/lib/postfix/master
 postfix 3748 3708 0 Apr24 ? 00:00:01 qmgr -l -t fifo -u
 postfix 3749 3708 0 Apr24 ? 00:00:00 ピックアップ -l -t fifo -u -c
 後置 13504 3708 0 16:05 ? 00:00:00 クリーンアップ -z -t unix -u -c
 後置 15458 3708 0 17:45 ? 00:00:00 クリーンアップ -z -t unix -u -c
 後置 19907 3708 0 19:25 ? 00:00:00 クリーンアップ -z -t unix -u -c

プロセス「master」、「qmgr」、「pickup」、および「cleanup」はすべて、アプリケーションのポストフィックスに属しています。このプロセスを開始した親プロセスを示す 3 番目の列を見ると、これらのプロセスがそれぞれ 1 つの親プロセス「マスター」に属していることがわかります。私の例では、すべてのプロセスは ID 3708 のプロセスごとに開始されています。別の例は、起動時にいくつかの httpd プロセスを作成する Apache Web サーバーです。ここでは、プロセス名はすべて同じですが、カウントは構成によって異なります。

解決したい問題に戻るには、次の 2 つの方法を試すことができます。

  1. プロセス名とアプリケーションの関連付けを含むデータベースを構築し、これを使用して ps を使用してアプリケーションのリストを作成します。
  2. グラフィカル ユーザー インターフェイスを表示するアプリケーションのみを一覧表示するようにアプリケーションを制限します。このリストは、いくつかの X11 関数などを使用して簡単に作成できるはずです...

お役に立てれば...

于 2012-05-31T18:01:31.703 に答える
1

pstreeはもう試しましたか?これは、システムで実行されているプロセスのツリーを示しています。

htopは、リソースの使用率を示し、列を追加することでプロセスが固定されている場所を確認できるため、マルチコア環境で通常使用するものです。htop は top よりも使いやすく、より多くのオプションがあります。実行するときに「t」を押すだけで、プロセスが親でソートされます。

他のツールは知りませんが、/procを使用して独自のスクリプトを作成し、必要な情報を抽出するという方法もあります。

お役に立てば幸いです。

編集:プロセスがLinuxでフォークされていることを忘れていたので、他のいくつかのプロセス/スレッドを開始する親プロセスがあります。あなたの質問から、実行中のプロセスごとに親プロセスを見つけようとしているようです。私の答えはその仮定に基づいています。

于 2012-05-31T20:47:11.627 に答える
0

から開始することもできますxlsclients

おそらく、必要なすべての機能を備えているわけではありませんが、Linux には明確に定義されたアプリケーションの概念がありません。

次に役立つと思われるのはxprop( を探す_NET_WM_PID) ですが、これはすべてのプログラムで動作することが保証されているわけではありません。

于 2012-05-31T18:08:27.677 に答える
0

トップをチェックアウト (linux コマンド)

そして、この記事はあなたを大いに助けます。 http://www.cyberciti.biz/tips/top-linux-monitoring-tools.html

于 2012-05-31T17:30:19.760 に答える