Solaris 一般桌上管理系統環境:使用者指南

第 17 章 「處理程序管理者」的使用方法

使用「處理程序管理者」顯示您的工作站所執行的程序,也可用來在這些程序上執行動作。您可以做這些而不需要知道ps (truss )線上援助頁的(truss )kill(truss )的語法而直接執行上述作業。 只要是有相關,每一個「處理程序管理者」均會被授與相等的 UNIX 指令。

關於程序

UNIX 系統會運用程序。您的登入 shell、應用程式、所執行的編輯階段作業,甚至列出檔案的 ls 程式都是程式,都是由 UNIX 作業環境所控制的。

在 UNIX 系統,您可以在這些程序中執行操作。例如,您可以在任何時候檢視自己正在執行的所有程式,選擇任何程式以停止或重新啟動,及檢查異常的程序並加以除錯。

尋找異常程序的秘訣

異常程序指的是沒有照您希望去做的程序。例如,某個程序可能因為錯誤的緣故,而消耗一大半可供使用的資源;或是和另一個程序互相妨礙。當您遇到下列狀況時,可以用「處理程序管理者」偵測異常程序:

「處理程序管理者」在顯示所有的程序時,通常會顯示三十到五十個程序,因此對沒有受過訓練的人來說,尋找異常的程序可不是件容易的事!下列的提示也許能幫點忙(否則請和您的系統管理者連絡):

取樣、顯示及儲存處理程序資訊

「處理程序管理者」會顯示在您的工作站上執行的處理程序,並且提供它們的存取權。

圖 17–1 「處理程序管理者」顯示出包含“audio”字串的程序項目。

Graphic

在清單中的每一個處理程序項目均提供有用的資訊,說明如下表所示:

 欄位標頭 意義
 ID 處理程序 ID
 名稱 處理程序名稱
 所有者 所有者名稱
 CPU% 最近所用的 CPU 時間和同一時段可用的時間的比例,以百分比表示
 RAM 此程序目前所佔用的 RAM
 交換 虛擬記憶體總數
 啟動於 真正開始時間(若非現在則用日期)
 母項 母項程序的程序 ID,或 PPID
 指令 真正被執行的 UNIX 指令(截斷的)

您可以執行下列動作,而不會影響到所選取工作站上的任何處理程序:

開啟「處理程序管理者」

    在「前方面板」的「工具」子面板上按一下「尋找處理程序」控制。

    「處理程序管理者」主視窗會顯示。會立即將工作站取樣,並且顯示所有目前的處理程序樣本。

如果要顯示處理程序的子集

  1. 在「處理程序管理者」的「過濾器」欄位中,鍵入您要過濾的文字。

    您要過濾的文字,應該是您希望顯示的所有處理程序子集或群組的處理程序項目當中共有的字串。 例如,在圖 17–1中,該使用者顯示的是所有有關「聲訊工具」的處理程序。

  2. 請按 Return 鍵。

    「處理程序管理者」會更新捲動窗格內的處理程序,亦即只包括那些完全符合過濾文字內容的處理程序項目。

  3. 若要復原到所有處理程序的顯示螢幕,請清除「過濾器」欄位,然後按下 Return 鍵。

尋找處理程序

  1. 在「尋找」的下拉式方塊中鍵入您想要搜尋的文字,或是從「尋找」的下拉式清單中選取一個之前用過的搜尋文字。

    您的搜尋文字,應該是您想要顯示的所有處理程序的處理程序項目當中所共有的字串。

  2. 按下 Return 鍵,以選取游標所在位置下找到的第一個搜尋文字。

    這些文字可以是在整個處理程序項目的任何一個欄位中。

  3. 按下 Return 鍵,以選取下一個找到的文字,以此類推。

  4. 當您找到所需要的處理程序項目後,請清除「尋找」欄位的內容。


    注意 –

    當您已經到達捲動窗格的末端時,搜尋不會回復到清單的頂端,因此為確保您搜尋所有的處理程序,請在「尋找」方塊鍵入搜尋文字之前,選取清單上的第一個處理程序項目。


變更顯示螢幕的排列順序

依照預設值,「處理程序管理者」會按照 CPU 的使用量,由多至少地列出處理程序項目。您可以看得出來,因為在 CPU 使用量(CPU%)上頭的欄位標頭是被按下去的,而其它的欄位標頭並沒有這樣。

  1. 如果要選取某一欄進行處理程序項目清單的排序,請按一下相關的欄位標頭,或是從「開啟視窗」功能表中選取欄位名稱。

    「處理程序管理者」會將處理程序項目清單進行排序,然後以新的順序顯示清單。 每一欄的預設順序列於下表:

    表 17–1 處理程序項目的預設顯示順序
     選取的欄位標頭 方式
     ID 按處理程序 ID 以遞增的順序依數字排序
     名稱 按處理程序名稱的英文字母順序排序
     所有者 按所有者名稱的英文字母順序排序
     CPU% 按 CPU 使用量大小以遞減的順序依數字排序
     RAM 按 RAM 使用量大小以遞減的順序依數字排序
     交換 按交換空間使用量大小以遞減的順序依數字排序
     啟動於 按實際開始時間以遞減的順序依時間先後排序
     母項 按母項程序的 ID 編號以遞減的順序依數字排序
     指令 按完整的路徑名稱以遞減的順序依文數字排序(例如像 " / "字元的排序順序就比字母要低)

  2. (選擇性的)如要顛倒上述任何欄位的排序順序(例如按 RAM 的使用量大小以遞增的順序排序),請按一下被按下的欄位標頭按鈕。

    該欄位標頭區性會變黑,然後會以相反的順序顯示螢幕排序。

    Graphic

變更「取樣頻率」

依照預設值,「處理程序管理者」每隔 30 秒就會對工作站進行取樣,並更新顯示螢幕。

    如果要取消/啟動連續取樣模式,請從「取樣」功能表中選取「停止/開始」。

    如果連續取樣是開啟的,那麼您在「取樣」功能表上將會看到「停止」功能表項目;反之,則功能表項目將是「開始」。

    如果要變更取樣之間的間隔,請在「取樣頻率」方塊內鍵入秒數(最大可輸入值為 604800,即 14 天)。

    按下 Return 鍵,新的取樣頻率即生效。

    如果要立即取樣,請從「取樣」功能表中選取「現在」。

    「處理程序管理者」會進行取樣,然後更新顯示螢幕。

複製及儲存

您可以在顯示螢幕中選取及複製一個或一個以上的處理程序項目,然後將這些文字黏貼到其它的應用程式內。

關於將取樣的資料儲存到檔案,您還可以有下列的選擇:

建立含有現行範例的檔案

  1. 從「取樣」功能表中選取「儲存為」。

    「處理程序管理者」會顯示「儲存為」對話框。

  2. 指定新檔案的名稱和位置,然後按一下「確定」。

    「處理程序管理者」會從目前的顯示螢幕中,建立包含那些處理程序項目的文字檔案。

設定「日誌檔」

  1. 從「取樣」功能表中選取「登錄檔」。

    「處理程序管理者」會顯示「登錄檔」對話框。

  2. 指定新檔案的名稱和位置,然後按一下「確定」。

    「處理程序管理者」會建立文字檔案,並將每一個新的取樣(連同標頭資訊)附加到檔案內。


    注意 – 注意 –

    「處理程序管理者」將會繼續附加進這個檔案,直到您終止「處理程序管理者」應用程式,或是直到您從「取樣」功能表中選取「停止登錄」為止。


在選定的處理程序上執行動作

當您在清單上辨識並選取某個處理程序項目後,您便可以在這個處理程序上執行下列動作:


注意 – 注意 –

若您對以上所說的處理程序有不了解的地方,請詢問您的系統管理人員。


發送取消信號給處理程序

UNIX 中的清除指令讓使用者能夠發送一個信號給處理程序。信號是一個送給處理程序的訊息,用以岔斷處理程序,並引發反應。若是這個處理程序原本的設計就是要對送給它的這類訊息產生反應,它就會產生反應,不然就會終止。訊息共有 42 種,在信號( 5 )一章中加以說明。 下表列出幾個常用的訊息數字/名稱及它們的涵義:

 信號號碼 信號名稱 意義
 1  HUP 掛斷(經常在登出前使用)
 2 INT 岔斷(和終端機階段作業中按下Control+C 一樣)
 9 KILL

清除(終止而不清除) 

唯有在處理程序所有者或高階使用者(root)發出時才奏效 

這個處理程式無法對此信號有反應;必須終止 

 15 TERM

清除(在清除後優雅地終止) 

唯有在處理程序所有者或高階使用者(root)發出時才奏效 

這個「清除」功能表項目能讓您發送清除 (9) 的信號給某個處理程序,然後很快地將它清除。「信號」功能表項目能讓您對kill(1 )指令所發送的信號有更大的控制權,例如您可以發送一個 INT 信號或 HUP 信號等等。


注意 – 注意 –

若您明瞭為何要這麼做的話,您應該只發送一個訊號給一個處理程序。例如,假如您選取登入 shell 並發送清除信號,您會立即登出。有關處理程序和工作控制的進一步資訊,請洽詢您的系統管理人員或參閱下列文件:


如果要清除取消一個處理程序(快速取消)

  1. 在「處理程序管理者」捲動窗格中選取一個處理程序項目。

  2. 從「處理」功能表中選取「清除」。

    只要您有許可權,「處理程序管理者」便會清除該處理程序(及它的子程序),否則就會顯示錯誤訊息。有時,處理程序要花幾秒鐘的時間才能終止。要判定處理程序是否已被取消,請看下一次「處理程序管理者」更新顯示螢幕。如果該處理程序沒有列在其中,即表示已被清除。


    提示 –

    相等的 UNIX 指令為:

    kill -9PID 其中的 PID 是選取處理程序的識別 ID。

    您可以藉由重新定義檔案內標記為‘Kill’的這個動作,將「清除」功能表項目所指行的指令重新定義成一個不同的指令:

    /usr/dt/appconfig/types/C/sdtprocess.dt


如果要發送信號給處理程序

  1. 在「處理程序管理者」捲動窗格中選取一個處理程序項目。

  2. 從「處理」功能表中選取「信號」。

    「處理程序管理者」會顯示對話框,要求您指定信號。您至少必須提供定義於信號 (5) 線上援助頁上 42 個信號中的一個信號。

  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 程序起始一個或一個以上相依的處理程序時,就將它們稱為子項程序或子。子項程序和母項程序有相同的使用者 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. 從「處理」功能表中選取「顯示堆疊」。

    「處理程序管理者」會顯示視窗,裡面包含所選取處理程序的十六進位及符號式的堆疊追蹤。


提示 –

相等的 UNIX 指令為:

/usr/proc/bin/pstack PID

其中的 PID 是選取程序的識別 ID。


如果要為處理程序除錯

應用程式的開發者和系統管理人員有時會使用除錯應用程式-如使用 Sun Workshop,調查異常的處理程序。「處理」功能表中的「除錯」項目,會叫出您偏好的除錯程式,用在選取的處理程序上。

    使用您偏好的除錯程式為處理程序除錯。


提示 –

相等的 UNIX 指令為:

workshop -d command

其中的 workshop 指的是除錯程式的名稱,command 則是需要將處理程序 ID 傳給除錯程式的指令。