使用「程序管理員」顯示您的工作站所執行的程序,也可用來在這些程序上執行動作。即使不知道ps(1)的語法, truss(1), kill(1)以及其他以字元為基礎的指令,還是可以執行此動作。只要是有相關,每一個「程序管理員」均會被授與相等的 UNIX 指令。
UNIX 系統會運用程序。您的登入 shell、應用程式、所執行的編輯階段作業,甚至列出檔案的 ls 程式都是程式,都是由 UNIX 作業環境所控制的。
在 UNIX 系統,您可以在這些程序中執行作業。例如,您可以隨時查看所有正在執行的程式、選擇停止和重新啟動程式,以及檢查和除錯異常程序。
異常程序指的是沒有照您希望去做的程序。例如,某個程序可能因為錯誤的緣故,而消耗一大半可供使用的資源;或是和另一個程序互相妨礙。當您遇到下列狀況時,可以用「程序管理員」偵測異常程序:
工作站效能或回應好像延遲了。
程式對使用者所輸入的東西毫無反應。
標準的服務,像是列印、檔案傳輸、遠端登入等毫無反應。
「程序管理員」在顯示所有的程序時,通常會顯示三十到五十個程序,因此對沒有受過訓練的人來說,尋找異常的程序可不是件容易的事!下列的提示也許能幫點忙(否則請和您的系統管理員連絡):
請使用「效能監視器」,來查看 CPU 用量或磁碟用量等效能參數是否過高。 如果是的話,您可以用「程序管理員」找出異常的程序。
使用「程序管理員」以識別:
程序在不該使用的情況下使用一大半可用的 CPU 或 RAM。
父程序復原為 1 的孤立程序,也就是init (但並非像sched 、dtlogin或是cron這類父程序識別碼應為 1 的程序)
很久之前即已啟動,而且早該結束卻沒有結束的程序
其他使用者所用的大量程序會降低效能。
「程序管理員」會顯示在您的工作站上執行的處理程序,並且提供它們的存取權。
在清單中的每一個處理程序項目均提供有用的資訊,說明如下表所示:
欄位標題 | 意義 |
---|---|
ID | 程序識別碼 |
名稱 | 程序名稱 |
所有者 | 所有者名稱 |
CPU% | 最近 CPU 使用時間佔同一段時期 CPU 可用時間的比例(以百分比顯示) |
RAM | 此程序目前所佔用的 RAM 數量 |
交換 | 虛擬記憶體的總容量 |
啟動於 | 實際開啟時間(如果不是目前的日期則會顯示開啟日期) |
父程序 | 父程序的程序識別碼或是 PPID |
指令 | 真正被執行的 UNIX 指令(截斷的) |
您可以執行下列動作,而不會影響到所選取工作站上的任何處理程序:
顯示所有的處理程序,或僅顯示含有特殊字串的處理程序
尋找包含某特殊字串的處理程序
顯示捲動窗格內以任何欄位排序的處理程序
變更取樣的間隔,複製並儲存取樣的資訊
在「程序管理員」的「過濾器」欄位中,鍵入您要過濾的文字。
您要過濾的文字,應該是您希望顯示的所有處理程序子集或群組的處理程序項目當中共有的字串。 例如,在圖 19–1中,該使用者顯示的是所有有關「聲訊工具」的處理程序。
請按 Return 鍵。
「程序管理員」會更新捲動窗格內的處理程序,亦即只包括那些完全符合過濾文字內容的處理程序項目。
若要復原到所有處理程序的顯示螢幕,請清除「過濾器」欄位,然後按下 Return 鍵。
在「尋找」的下拉式方塊中鍵入您想要搜尋的文字,或是從「尋找」的下拉式清單中選取一個之前用過的搜尋文字。
您的搜尋文字應該是字元組成的字串,這是所有您會想要顯示的程序項目一般常見的形式。
按下 Return 鍵,以選取游標所在位置下找到的第一個搜尋文字。
文字可能出現在程序項目的任何欄位中。
按 Return 以反白顯示文字下一次出現的地方,依此類推。
當您找到所需要的處理程序項目後,請清除「尋找」欄位的內容。
當您已經到達捲動窗格的末端時,搜尋不會回復到清單的頂端。因此為確保您搜尋所有的處理程序,請在「尋找」方塊鍵入搜尋文字之前,選取清單上的第一個處理程序項目。
依照預設值,「程序管理員」會按照 CPU 的使用量,由多至少地列出處理程序項目。您可以看得出來,因為在 CPU 使用量(CPU%)上頭的欄位標題是被按下去的,而其它的欄位標題並沒有這樣。
如果要選取某一欄進行處理程序項目清單的排序,請按一下相關的欄位標題,或是從「開啟視窗」功能表中選取欄位名稱。
「程序管理員」會將處理程序項目清單進行排序,然後以新的順序顯示清單。 每一欄的預設順序列於下表:
表 19–1 處理程序項目的預設顯示順序選取的欄位標題 | 方式 |
---|---|
ID | 按照程序識別碼以遞增順序排列 |
名稱 | 按處理程序名稱的英文字母順序排序 |
所有者 | 按所有者名稱的英文字母順序排序 |
CPU% | 按 CPU 使用量大小以遞減的順序依數字排序 |
RAM | 按 RAM 使用量大小以遞減的順序依數字排序 |
交換 | 按交換空間使用量大小以遞減的順序依數字排序 |
啟動於 | 按實際開始時間以遞減的順序依時間先後排序 |
父程序 | 按父程序的 ID 編號以遞減的順序依數字排序 |
指令 | 按完整的路徑名稱以遞減的順序依文數字排序(例如像 " / " 字元的排序順序就比字母要低) |
(選擇性的)如要顛倒上述任何欄位的排序順序(例如按 RAM 的使用量大小以遞增順序排序),請按一下被按下的欄位標題按鈕。
該欄位標題區域會變黑,然後會以相反的順序顯示螢幕排序。
依照預設值,「程序管理員」每隔 30 秒就會對工作站進行取樣,並更新顯示螢幕。
如果要變更取樣之間的間隔,請在「取樣頻率」方塊內鍵入秒數(最大可輸入值為 604800,即 14 天)。
按下 Return 鍵,使新的取樣頻率生效。
如果要立即取樣,請從「取樣」功能表中選取「現在」。
「程序管理員」會進行取樣,然後更新顯示螢幕。
您可以在顯示螢幕中選取及複製一個或一個以上的處理程序項目,然後將這些文字貼到其它的應用程式內。
您也可以採用下列選項將取樣資料儲存到檔案中:
建立一個只包含目前取樣的新檔案
設立一個將每一個新的取樣附加進去的日誌檔
從「取樣」功能表中選取「另存新檔」。
「程序管理員」會顯示「另存新檔」對話方塊。
指定新檔案的名稱和位置,然後按一下「確定」。
「程序管理員」會從目前的顯示螢幕中,建立包含那些處理程序項目的文字檔案。
從「取樣」功能表中選取「日誌檔」。
「程序管理者」會顯示「日誌檔」對話方塊。
指定新檔案的名稱和位置,然後按一下「確定」。
「程序管理員」會建立文字檔案,並將每一個新的取樣(連同標題資訊)附加到檔案內。
「程序管理員」將會繼續附加進這個檔案,直到您終止「程序管理員」應用程式,或是直到您從「取樣」功能表中選取「停止登錄」為止。
當您在清單上辨識並選取某個處理程序項目後,您便可以在這個處理程序上執行下列動作:
發送一個取消訊號,以終止處理程序或引起反應
搜尋「位址管理員」中所有者的進一步資訊
追蹤系統呼叫、顯示子程序或執行除錯程式
顯示處理程序的堆疊或其祖先
若您對以上所說的處理程序涵義有不了解的地方,請詢問您的系統管理人員。
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)。
在「程序管理員」捲動窗格中選取一個處理程序登錄。
從「處理」功能表中選取「清除」。
只要您有許可權,「程序管理員」便會清除該處理程序(及它的子程序),否則就會顯示錯誤訊息。有時,處理程序要花幾秒鐘的時間才能終止。要判定處理程序是否已被取消,請看下一次「程序管理員」更新顯示螢幕。如果該處理程序沒有列在其中,即表示已被清除。
相等的 UNIX 指令為:
kill -9PID 其中的 PID 是選定處理程序的識別碼。
您可以藉由重新定義檔案內標記為'Kill’的這個動作,將「清除」功能表項目所指行的指令重新定義成一個不同的指令:
/usr/dt/appconfig/types/C/sdtprocess.dt
在「程序管理員」捲動窗格中選取一個處理程序登錄。
從「處理」功能表中選取「訊號」。
「程序管理員」會顯示對話方塊,要求您指定訊號。您至少必須提供定義於 signal(5) 線上援助頁上 42 個訊號中的其中一個訊號。
鍵入相關訊號號碼或名稱,然後按一下「確定」。
「程序管理員」會發出該訊號指令,然後關閉對話方塊。而不會發出告訴您已成功地完成作業的訊息。一般而言,清除處理程序也會同時取消它的子項程序。
相等的 UNIX 指令為:清除-signum_name PID
其中的 -signum_name 是訊號號碼或名稱 PID 是選取程序的識別 ID。
在「程序管理員」捲動窗格中選取一個處理程序登錄。
從「處理」功能表中選取「尋找所有者」。
「程序管理員」會開啟「位址管理員」,並要求「位址管理員」搜尋系統卡,找出所選取的處理程序的系統使用者名稱。如需「位址管理員」的詳細資訊,請參閱 第 18章, 位址管理員的使用方法。
相等的 UNIX 指令為:
/usr/proc/bin/ptree PID
其中的 PID 是選取程序的識別 ID。
當 UNIX 程序起始一個或一個以上相依的處理程序時,就將它們稱為子程序或子。子程序和父程序有相同的使用者 ID。
在「程序管理員」捲動窗格中選取一個處理程序登錄。
從「處理」功能表中選取「追蹤子程序」。
「程序管理員」會顯示選取處理程序所建立的任何新子程序(以及子程序的子程序,一直下去)建立的記錄。
您可以使用 Intro (2)線上援助頁中說明的各個錯誤代碼名稱來報告傳回的錯誤。
相等的 UNIX 指令為:
truss -fa -texec、fork -s¦CLD,ALRM -p PID
其中的 PID 是選取程序的識別 ID。
處理程序在執行的時候,會呼叫 UNIX 核心程式,也就是呼叫系統。您可以追蹤這些系統呼叫,查看它們對其它處理程序所產生的影響。
在「程序管理員」捲動窗格中選取一個處理程序項目。
從「處理」功能表中選取「追蹤系統呼叫」。
「程序管理員」會顯示對話方塊,要求您輸入選擇性的引數。
按一下「確定」。
追蹤輸出的每一行,所報告的不是錯誤、訊號名稱,就是系統呼叫名稱,與它的引數和傳回值。若需進一步的資訊,請參閱truss( 1 )線上援助頁的說明。
相等的 UNIX 指令為:
truss -p PID
其中的 PID 是選取程序的識別 ID。
相等的 UNIX 指令為:
/usr/proc/bin/pstack PID
其中的 PID 是選取程序的識別 ID。
應用程式的開發者和系統管理人員有時會使用除錯應用程式,例如使用 Sun Workshop 來調查異常的處理程序。「處理」功能表中的「除錯」項目,會啟動您偏好的除錯程式,用在選取的處理程序上。
使用您偏好的除錯程式來除錯一個處理程序。
相等的 UNIX 指令為:
workshop -d command
其中的 workshop 指的是除錯程式的名稱,command 則是需要將處理程序 ID 傳給除錯程式的指令。