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

第 19章 程序管理員的使用方法

使用「程序管理員」顯示您的工作站所執行的程序,也可用來在這些程序上執行動作。即使不知道ps(1)的語法, truss(1), kill(1)以及其他以字元為基礎的指令,還是可以執行此動作。只要是有相關,每一個「程序管理員」均會被授與相等的 UNIX 指令。

關於程序

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

在 UNIX 系統,您可以在這些程序中執行作業。例如,您可以隨時查看所有正在執行的程式、選擇停止和重新啟動程式,以及檢查和除錯異常程序。

尋找異常程序的秘訣

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

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

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

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

圖 19–1 顯示包含字串 “audio”程序項目的程序管理員。

Graphic

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

 欄位標題 意義
 ID  程序識別碼
 名稱  程序名稱
 所有者 所有者名稱
 CPU%  最近 CPU 使用時間佔同一段時期 CPU 可用時間的比例(以百分比顯示)
 RAM  此程序目前所佔用的 RAM 數量
 交換 虛擬記憶體的總容量
 啟動於  實際開啟時間(如果不是目前的日期則會顯示開啟日期)
 父程序 父程序的程序識別碼或是 PPID
 指令  真正被執行的 UNIX 指令(截斷的)

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

開啟程序管理員

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

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

顯示處理程序的子集

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

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

  2. 請按 Return 鍵。

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

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

尋找處理程序

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

    您的搜尋文字應該是字元組成的字串,這是所有您會想要顯示的程序項目一般常見的形式。

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

    文字可能出現在程序項目的任何欄位中。

  3. 按 Return 以反白顯示文字下一次出現的地方,依此類推。

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


    註解 –

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


變更顯示螢幕的排列順序

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

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

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

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

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

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

    Graphic

變更取樣頻率

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

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

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

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

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

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

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

複製及儲存

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

您也可以採用下列選項將取樣資料儲存到檔案中:

建立含有目前範例的檔案

  1. 從「取樣」功能表中選取「另存新檔」。

    「程序管理員」會顯示「另存新檔」對話方塊。

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

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

設定日誌檔

  1. 從「取樣」功能表中選取「日誌檔」。

    「程序管理者」會顯示「日誌檔」對話方塊。

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

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


    小心 – 小心 –

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


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

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


小心 – 小心 –

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


發送取消訊號給處理程序

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

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

清除(終止而不清除) 

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

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

 15  TERM

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

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

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


小心 – 小心 –

若您明瞭為何要這麼做的話,您應該只發送一個訊號給一個處理程序。例如,假如您選取登入 shell 並發送清除訊號,您會立即登出。如需程序和工作控制項的進一步資訊,請連絡您的系統管理員或參閱 「Solaris 進階使用者指南」 (Sun Microsystems)。


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

  1. 在「程序管理員」捲動窗格中選取一個處理程序登錄。

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

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


    提示 –

    相等的 UNIX 指令為:

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

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

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


發送訊號給處理程序

  1. 在「程序管理員」捲動窗格中選取一個處理程序登錄。

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

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

  3. 鍵入相關訊號號碼或名稱,然後按一下「確定」。

    「程序管理員」會發出該訊號指令,然後關閉對話方塊。而不會發出告訴您已成功地完成作業的訊息。一般而言,清除處理程序也會同時取消它的子項程序。


提示 –

相等的 UNIX 指令為:清除-signum_name PID

其中的 -signum_name 是訊號號碼或名稱 PID 是選取程序的識別 ID。


尋找處理程序的所有者

  1. 在「程序管理員」捲動窗格中選取一個處理程序登錄。

  2. 從「處理」功能表中選取「尋找所有者」。

    「程序管理員」會開啟「位址管理員」,並要求「位址管理員」搜尋系統卡,找出所選取的處理程序的系統使用者名稱。如需「位址管理員」的詳細資訊,請參閱 第 18章, 位址管理員的使用方法

顯示處理程序的祖項

  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 傳給除錯程式的指令。