Solaris 共通デスクトップ環境 ユーザーズ・ガイド

第 17 章 プロセス・マネージャの使い方

プロセス・マネージャを使うと、ワークステーションで実行中のプロセスを表示したり、これらのプロセスに対してアクションを実行できます。その場合、ps(1)truss(1)kill(1)、その他の文字ベースのコマンドの構文に関する知識は必要ありません。プロセス・マネージャの各アクションに対し、対応する UNIX コマンドも適宜取り上げます。

プロセスとは

UNIX 上ではプロセスが動いています。ログインシェル、アプリケーションプログラム、ユーザが実行する編集セッション、さらにはユーザのファイルを表示する ls プログラムも、すべてオペレーティングシステムが制御するプロセスです。

UNIX では、これらのプロセスに対して操作を実行できます。たとえば、実行中のすべてのプログラムをいつでも表示したり、選択したとおりにプログラムを停止して再起動したり、誤動作しているプロセスを調べてデバッグしたりできます。

誤動作しているプロセスを見つけるための注意事項

誤動作しているプロセスとは、ユーザの期待するジョブを実行していないプロセスのことです。たとえば、バグのため利用可能な資源を大量に消費しているプロセス、あるいは他のプロセスの妨げになるプロセスなどです。このような事態が発生したときは、プロセス・マネージャを使って、誤動作しているプロセスを検出してください。

すべてのプロセスを表示する場合、プロセス・マネージャは通常 30 から 50 個のプロセスを表示します。以下の注意事項が役立つでしょう。不明な場合は、システム管理者に問い合わせてください。

プロセス情報の取得、表示、および保存

プロセス・マネージャを使うと、ワークステーションで実行中のプロセスを表示したり、これらのプロセスにアクセスしたりできます。

図 17-1 プロセス・マネージャで文字列 audio を含むプロセスエントリを表示する

Graphic

リスト内の各プロセスエントリは、次の表に記載するような有用な情報を提供します。

 カラム見出し 表示内容
 PID プロセス ID
 名前 プロセス名
 所有者 プロセスの所有者名 (ユーザ名)
 CPU% 最近 CPU を使用した時間と同じ期間内に使用可能な時間の比率をパーセントで表示
 SZ 現在このプロセスが占有する RAM の量
 VSZ 仮想記憶域の合計サイズ
 起動時刻 プロセスの起動時刻 (または日付)
 PPID 親プロセスのプロセス ID、つまり PPID
 コマンド 実行されている実際の UNIX コマンド (表示しきれない部分は切り捨て)

以下のアクションを実行しても、選択したワークステーション上で動いているプロセスには影響しません。

プロセス・マネージャを開くには

    フロントパネルの [ツール] サブパネルにある [プロセスを検索] コントロールをクリックします。

    プロセス・マネージャのメイン・ウィンドウが表示されます。プロセス・マネージャは、ワークステーション上で現在動いているすべてのプロセスの状態を表示します。

特定のプロセスのサブセットを表示するには

  1. [プロセス・マネージャ] ウィンドウの [フィルタ] フィールドにフィルタテキストを入力します。

    フィルタテキストは、表示しようとする特定のプロセスのサブセットつまりグループのプロセスエントリに共通する文字列を指定します。たとえば、図 17-1 では、[オーディオツール] に関連するすべてのプロセスを表示するために、audio と入力しています。

  2. [Return] キーを押します。

    スクロール区画のプロセスが変更され、フィルタテキストと正確に一致する部分を含んだプロセスエントリのみが取り込まれます。

  3. すべてのプロセスの表示に戻るには、[フィルタ] フィールドを消去してから [Return] キーを押します。

プロセスを検索するには

  1. 検索するテキストを [検索] ドロップダウンボックスに入力するか、[検索] ドロップダウンリストから前に使った検索テキストを選択します。

    検索するテキストは、表示しようとするプロセスすべてのプロセスエントリに共通する文字列にします。

  2. [Return] キーを押すと、最初に見つけた検索テキストが強調表示されます。

    プロセスエントリのすべてのフィールドが検索対象となります。

  3. [Return] キーを押して、次に見つけた検索テキストを強調表示します。以下、同様の操作を行います。

  4. 必要なプロセスエントリが見つかったら、[検索] フィールドを消去します。


    注 -

    スクロール区画の最後まできても、リストの一番上に戻って検索はされません。検索は下方向のみなので、カーソルを一番上のエントリにあわせてから検索してください。


ディスプレイのソート順を変更するには

デフォルトでは、プロセス・マネージャは、プロセスエントリを CPU 使用率の高いものから順番に表示します。これは、CPU 使用率カラムのカラム見出し (CPU%) が選択されていて、他のカラム見出しのボタンは選択されていないことを見ればわかります。

  1. プロセスエントリのリストからソートするカラムを選択するには、対応するカラム見出しをクリックするか、[表示] メニューからカラム名を選択します。

    プロセスエントリのリストがソートされ、新しい順序で表示されます。各カラムのデフォルト順序を表 17-1 に示します。

    表 17-1 プロセスエントリのデフォルトのディスプレイ順序
     選択したカラム ソート方法
     PID プロセス ID を基準にして数字の小さいものから順にソートする
     名前 プロセス名を基準にしてアルファベット順にソートする
     所有者 所有者名を基準にしてアルファベット順にソートする
     CPU% CPU 使用率を基準にして数値の大きいものから順にソートする
     SZ RAM 使用率を基準にして数値の大きいものから順にソートする
     VSZ スワップ空間の使用率を基準にして数値の大きいものから順にソートする
     起動時刻 プロセスの起動時刻を基準にして新しいものから順にソートする
     PPID 親プロセスのプロセス ID 番号を基準にして数字の大きいものから順にソートする
     コマンド フルパス名を基準にして英数字の大きいものから順にソートする (/ などの文字はソートに関しては英字に比べて数が小さい)

  2. (省略可能) 以上のカラムのいずれか 1 つのソート順を逆にするには (たとえば、RAM 使用率を基準にして数値の小さいものから順にソートする)、カラム見出しの [SZ] ボタンを再度クリックします。

    カラム見出し領域が強調表示されて、逆順でソートした結果が表示されます。

    Graphic

プロセスの状態の取得間隔を変更するには

デフォルトでは、プロセス・マネージャは、30 秒ごとにワークステーション上のプロセスの状態を取得して結果を表示します。

    プロセスの状態を連続して取得する場合は、[プロセスの状態の取得] メニューから [開始]、連続して取得しない場合は [停止] を選択します。

    プロセスの状態を連続して取得している場合は、[プロセスの状態の取得] メニューに [停止] というメニュー項目が表示されます。連続して取得していない場合は、[開始] になります。

    プロセスの状態の取得間隔を変更するには、[プロセスの状態の取得間隔] ボックスに秒数 (最大 604800 秒、つまり 14 日) を入力します。

    [Return] キーを押して、新しいプロセスの状態の取得間隔を有効にします。

    直ちにプロセスの状態の取得を行うには、[プロセスの状態の取得] メニューから [現在の状態を取得] を選択します。

プロセス・マネージャはプロセスの状態の取得を行い、ディスプレイが変更されます。

コピーと保存

ディスプレイのプロセスエントリを 1 つまたは複数選択してコピーし、そのテキストを他のアプリケーションにペーストできます。

また、プロセスの状態をファイルに保存するときに使用できるオプションは、次のとおりです。

現在のプロセスの状態を格納するファイルを作成するには

  1. [プロセスの状態の取得] メニューから [別名保存] を選択します。

    [別名保存] ダイアログボックスが表示されます。

  2. 新しいファイル名と格納場所を指定し、[了解] をクリックします。

    現在表示されているプロセスエントリを格納したテキストファイルが作成されます。

ログファイルを設定するには

  1. [プロセスの状態の取得] メニューから [ログファイル] を選択します。

    [ログファイル] ダイアログボックスが表示されます。

  2. 新しいファイル名と保存するフォルダ名を指定し、[了解] をクリックします。

    テキストファイルが作成され、新しいプロセスの状態が (ヘッダー情報とともに) このファイルに追加されます。


    注意 - 注意 -

    プロセス・マネージャを終了するか、[プロセスの状態の取得] メニューから [ログ作成を停止] を選択しないかぎり、引き続きこのファイルに追加されます。


選択したプロセスに対するアクションの実行

リスト内のプロセスエントリを特定して選択すると、このプロセスに対して次のアクションを実行できます。


注意 - 注意 -

次の手順のうち意味が分からないものについては、システム管理者に問い合わせてください。


終了シグナルをプロセスに送る

UNIX の kill コマンドを使うと、プロセスにシグナルを送ることができます。「シグナル」とは、プロセスを中断して応答を行わせるためにプロセスに送られるメッセージです。送られるタイプの信号にプロセスが応答するようになっていれば、プロセスは応答します。応答するようになっていなければ、プロセスは終了します。signal(5) のマニュアルページに記載されているように、シグナルは 42 種類あります。次の表に、よく使われるシグナルの番号、名前、および意味をまとめます。

 シグナル番号 シグナル名 意味
 1HUP ハングアップ (ログアウト前に使われる場合が多い)
 2INT 割り込み (端末セッションで [Control]+[C] キーを押した場合と同じ)
 9KILL

終了 (クリーンアップなしに終了する) 

プロセスの所有者またはスーパーユーザ (root) が出した場合にのみ機能する。 

プログラムはこのシグナルに応答できず、終了しなければならない 

 15TERM

終了 (クリーンアップ後に正常終了する) 

プロセスの所有者またはスーパーユーザ (root) が出した場合にのみ機能する 

[強制終了] メニュー項目を使うと、プロセスに KILL シグナルを送ってクイック終了できます。[シグナルを送信] メニュー項目を使うと、kill(1) コマンドで送られるシグナルをさらに制御できます。たとえば、INT シグナルまたは HUP シグナルを送信できます。


注意 - 注意 -

プロセスにシグナルを送るだけにしてください。ただし、ユーザがその意味を理解していることが条件です。たとえば、ログインシェルを選択して KILL シグナルを送ると、突然ログアウトします。プロセスならびにジョブ制御の詳細は、システム管理者に問い合わせるか、次の内容を参照してください。


プロセスを終了するには (クイック終了)

  1. プロセス・マネージャのスクロール区画でプロセスエントリを選択します。

  2. [プロセス] メニューから [強制終了] を選択します。

    プロセス (およびその子プロセス) が終了します。ただし、ユーザにアクセス権が必要です。アクセス権がない場合は、エラーが表示されます。プロセスの終了に数秒かかる場合もあります。次にプロセス・マネージャでプロセスの表示画面が変更される際にそのプロセスが表示されていなければ、プロセスは終了しています。


    ヒント -

    対応する UNIX コマンドは kill -9 PID です。PID は、選択したプロセスのプロセス ID です。

    次のファイルの「Kill」というラベルのついたアクションを再定義すると、[強制終了] メニュー項目で実行されるコマンドを別のコマンドに再定義できます。

    /usr/dt/appconfig/types/localename/sdtprocess.dt


プロセスにシグナルを送るには

  1. プロセス・マネージャのスクロール区画でプロセスエントリを選択します。

  2. [プロセス] メニューから [シグナルを送信] を選択します。

    ダイアログボックスが表示され、シグナルの指定を求められます。signal(5) のマニュアルページに記載する 42 種類のシグナルから、少なくとも 1 つを指定します。

  3. 対応するシグナル番号または名前を入力し、[了解] をクリックします。

    シグナルコマンドが表示され、ダイアログボックスが閉じます。成功を知らせるメッセージは表示されません。通常、プロセスを終了すると、その子プロセスも終了します。


ヒント -

対応する UNIX コマンドは kill -signum_name PID です。-signum_name はシグナルの番号または名前、PID は選択したプロセスのプロセス ID です。


プロセスの所有者を検索するには

  1. プロセス・マネージャのスクロール区画でプロセスエントリを選択します。

  2. [プロセス] メニューから [所有者情報を表示] を選択します。

    アドレス・マネージャが表示され、選択したプロセスのシステムユーザ名がシステムカードで自動的に検索されます。アドレス・マネージャの詳細は、第 16 章「アドレス・マネージャの使い方」を参照してください。

プロセスの系統図を表示するには

  1. プロセス・マネージャのスクロール区画でプロセスエントリを選択します。

  2. [プロセス] メニューから [プロセスの系統図を表示] を選択します。

    指定したプロセスのプロセスツリーを含んだウィンドウが表示されます。子プロセスは、それぞれの親プロセスに対してインデントされて表示されます。

    Graphic

ヒント -

対応する UNIX コマンドは /usr/proc/bin/ptree PID です。PID は、選択したプロセスのプロセス ID です。


子プロセスを追跡するには

UNIX プロセスが 1 つまたは複数の依存プロセスを起動するとき、このプロセスを「子プロセス」または子供といいます。子プロセスと親プロセスのユーザ ID は同じです。

  1. プロセス・マネージャのスクロール区画でプロセスエントリを選択します。

  2. [プロセス] メニューから [子プロセスを追跡] を選択します。

    選択したプロセスのすべての子プロセス (およびその子プロセス、再帰的に作成されます) の作成記録が表示されます。

    Intro(2) のマニュアルページに記載するエラーコード名を使って、エラーリターンがレポートされます。


    ヒント -

    対応する UNIX コマンドは、truss -fa -texec,fork -s|CLD,ALRM -p PID です。PID は、選択したプロセスのプロセス ID です。


システムコールを追跡するには

プロセスは、実行中に UNIX カーネルの呼び出し、つまりシステムコールを行います。これらのシステムコールを追跡して、他のプロセスに与えている影響を確認できます。

  1. プロセス・マネージャのスクロール区画でプロセスエントリを選択します。

  2. [プロセス] メニューから [システムコールを追跡] を選択します。

    ダイアログボックスが表示され、任意の引き数の入力を求められます。

  3. [了解] をクリックします。

    トレース出力の各行は、フォルトの発生またはシグナル名、引き数と戻り値を含めたシステムコール名のいずれかをレポートします。詳細は、truss(1) のマニュアルページを参照してください。


ヒント -

対応する UNIX コマンドは、truss -p PID です。PID は選択したプロセスのプロセス ID です。


プロセスのスタックを表示するには

  1. プロセス・マネージャのスクロール区画でプロセスエントリを選択します。

  2. [プロセス] メニューから [スタックを表示] を選択します。

    選択したプロセスに対して 16 進数と記号からなるスタックトレースが表示されます。


ヒント -

対応する UNIX コマンドは、/usr/proc/bin/pstack PID です。PID は選択したプロセスのプロセス ID です。


プロセスをデバッグするには

アプリケーション開発者とシステム管理者は、Sun WorkshopTM などのデバッグ用アプリケーションを使い、誤動作しているプロセスを詳しく調べることがあります。[プロセス] メニューの [デバッグ] 項目を使うと、選択したプロセスに対してユーザの指定するデバッガが呼び出されます。

    指定のデバッガを使って、プロセスをデバッグします。


ヒント -

対応する UNIX コマンドは、workshop -d command です。workshop はデバッグプログラム名、command はプロセス ID をデバッガに引き渡すために必要なコマンドです。