820 likes | 958 Views
第 16 章. 檢視系統資訊. 本章提要. 16-1 查看登入的使用者 16-2 管理執行中的程序 16-3 檢查記錄檔. 16-1 查看登入的使用者. 多人使用的環境中 , 每個用戶都能執行各種不同的程式。有些使用者在閱讀新聞群組 , 有些則在撰寫電子郵件 , 而另一些使用者可能正在下載檔案。如果電腦的運作不正常 , 或是被使用者亂搞一通 , 那可要好好管理才行。. 查看登入的使用者. 16-1-1 觀察使用者舉動的 w 指令 16-1-2 查看目前有哪些使用者登入的 who 指令
E N D
第 16 章 檢視系統資訊
本章提要 • 16-1 查看登入的使用者 • 16-2 管理執行中的程序 • 16-3 檢查記錄檔
16-1 查看登入的使用者 • 多人使用的環境中, 每個用戶都能執行各種不同的程式。有些使用者在閱讀新聞群組, 有些則在撰寫電子郵件, 而另一些使用者可能正在下載檔案。如果電腦的運作不正常, 或是被使用者亂搞一通, 那可要好好管理才行。
查看登入的使用者 • 16-1-1 觀察使用者舉動的 w 指令 • 16-1-2 查看目前有哪些使用者登入的 who 指令 • 16-1-3 查看曾登入此系統之使用者的 last 指令 • 清單太長了!來不及看,怎麼辦?
16-1-1 觀察使用者舉動的 w 指令 • 若想知道使用者的舉止行為, 只需在文字模式下執行 w指令即可:
觀察使用者舉動的 w 指令 • w 指令的訊息意義 • 觀察個別使用者
w 指令的訊息意義 • 首先, 來瞭解一下 w指令顯示之訊息所代表的意義。第一列由左至右共有四個欄位, 分述其意義如下: • 系統目前的時間:"14:12:38" 表示執行 w指令的時間。 • 系統啟動後已經過的時間:"up 10 days, 20:38" 表示該系統已經啟動 10 天又 20 小時 38 分鐘。
w 指令的訊息意義 • 目前登入此系統的使用者總數:"6 users" 表示目前共有 6 位使用者登入此系統。同一個使用者帳號可重複登入, 因而會見到重複的帳號名稱。 • 系統平均負載指示:"load average: 0.12, 0.09, 0.08" 的數值, 分別表示該系統在過去 1、5、15 分鐘內的平均負載程度。其值越接近 0.00 表示系統負載越低, 效能亦會較佳。
w 指令的訊息意義 • 第二列共分為 8 個欄位, 分別顯示出各個使用者在做的事情, 以及該使用者所佔用的系統資源: • USER:顯示登入的使用者帳號名稱。若使用者重複登入系統, 則其帳號名稱也會重複顯現。
w 指令的訊息意義 • TTY:該使用者登入的終端機代號。依照登入的形式不同, 終端機代號也不盡相同。其中, tty1~tty6 分別代表本機上的 1 到 6 號虛擬主控台。pts/1 之類的標示, 代表此使用者是從遠端登入, 至於 ":0" 則表示使用者是從 X WindowSystem 登入。
w 指令的訊息意義 • FROM:顯示使用者從何處登入系統。如果是由本地端登入系統, 則此一欄位將呈現 - 符號。若從遠端登入, 便會顯示遠端主機的 IP 位址或主機名稱。 • LOGIN@:這是 "Login At" 的意思, 表示該使用者登入系統時的時間 (不是登入後經過的時間)。
w 指令的訊息意義 • IDLE:使用者閒置的時間。這是一個計時器, 只要該使用者開始新工作, 這個計時器就會重新計時。 • JCPU:以終端機之代號來區分, 該終端機所有相關程序(process) 執行時,所消耗的 CPU 時間會顯示在這裡。此處的時間並非不斷累加, 每當工作告一段落就停止計時, 開始新的工作則會重新計時。
w 指令的訊息意義 • PCPU:CPU 執行程式耗費的時間, 該時間就是執行 WHAT 欄內的程式所消耗之時間。 • WHAT:使用者正在做的事。假若正在執行某個程式, 這裡會標示出該程式的名稱, 如果正在執行一般的文字模式指令, 則會顯示使用者環境的名稱。
觀察個別使用者 • 當登入系統的使用者眾多, 執行 w指令列出所有資料, 恐怕會讓自己眼花撩亂。假設只需觀察其中某位使用者時, 可指定使用者的帳號名稱: • w指令預設會顯示詳細資料, 假使不需如此詳細, 在執行指令時加上參數即可, 相關資訊請執行 w --help或 man w指令查詢。
16-1-2 查看目前有哪些使用者 登入的 who 指令 • who指令可用來查看目前系統有哪些使用者登入:
查看目前有哪些使用者 登入的 who 指令 • 亦可加上參數讓列表更加詳細, 請執行 who -Hu指令:
查看目前有哪些使用者 登入的 who 指令 • PID 為程序代號。每個程序都會有一個 PID, 以供系統辨識及處理。 • 您可以執行 who --help指令獲知參數的相關資訊。
16-1-3 查看曾登入此系統之 使用者的 last 指令 • 想知道最近有哪些使用者曾經登入過系統, 可執行last指令查詢:
查看曾登入此系統之 使用者的 last 指令 • 僅執行last指令, 會列出所有使用者。如果想要查詢某位使用者的登入狀況, 只需在指令後面加上該使用者的帳號名稱即可:
查看曾登入此系統之 使用者的 last 指令 • 其他關於 last指令參數的資訊, 執行 last --help指令便可獲知。
清單太長了!來不及看,怎麼辦? • 系統運行一段時間後, 單用last指令查詢曾登入的使用者清單時, 將會列出長長的一串內容, 由於其列出的內容實在是太長了, 在眼前一晃即過, 根本來不及細看。 • 此時可使用建立管線的方式以便觀看清單, 例如執行 last | more指令, 然後每按一次 鍵就向下捲動一行, 或是每按一次空白鍵就向下捲動一頁, 慢慢查看登入記錄。
清單太長了!來不及看,怎麼辦? • 執行 last | less指令亦有類似效果, 您可用方向鍵、空白鍵、[Page Up] 和 [Page Down] 等按鍵瀏覽記錄, 然後按 [Q] (或 [q] ) 鍵離開。此外您亦可按[Shift] + [Page Up] 和 [Shift] + [Page Down] 組合鍵, 上下瀏覽程序列表。 • 當然也可以先將執行結果輸出成檔案, 例如執行 last > login.log指令, 會產生一個名稱為 login.log 的檔案, 再以文書編輯程式開啟該檔案, 就能不慌不忙地觀看其內容。
16-2 管理執行中的程序 • 在系統中每位使用者都能執行多個程式, 每個程式又可能分成數個程序執行。某些程序會佔用大量的系統資源, 造成系統負載過重。因此如何做好程序的管理與監督, 是一項重要的工作。
管理執行中的程序 • 16-2-1 監視系統資源的使用狀況 - top指令 • 16-2-2 查詢執行中的程序 - ps指令 • 16-2-3 刪除執行中的程序 - kill 指令 • 16-2-4 改變程序的優先權等級 - nice 與 renice 指令
16-2-1 監視系統資源的 使用狀況 - top指令 • 做為一個良好的管理者, 我們必須掌握系統中最消耗 CPU 資源的程序, 以維持系統之整體效能, 因而隨時監看系統的狀態也是管理者的一項重要工作。 • top指令用於監控系統的資源, 包括記憶體、交換檔分割區和 CPU 之使用率等等。現在請執行 top指令:
監視系統資源的使用狀況- top指令 • 執行 top指令後, 會周期性地更新內容, 顯示最新的系統狀況。 • 預設是以CPU 的負載狀況排序, 您也可以按[M] 鍵改成以記憶體的使用率, 或者按 [T] 鍵以執行的時間排序 (按 [P] 鍵可改回預設值)。 • 在 top 裡的按鍵, 需注意大小寫是不同的。
監視系統資源的使用狀況- top指令 • 殭屍出現了! • 監視特定使用者 • 結束執行中的程序
殭屍出現了! • 執行的程序有 sleeping、running、stopped 等狀態, 相信大家都還能夠理解, 可是這邊居然出現了殭屍 (zombie)?看來 Linux 的世界裡似乎存在著不少妖魔鬼怪! • 其實所謂的殭屍, 是指『父母不知道的死孩子』。
殭屍出現了! • 我們用電腦的語言來解釋會更清楚些, 程式可能分為數個程序執行, 當某個程序又產生另一個程序時, 原先的程序就稱為父程序(parent), 從父程序中產生的新程序, 稱之為子程序(child)。 • 倘若子程序已經當掉 (形同死亡), 而其父程序不知子程序早已死去, 無法將子程序佔用的系統資源回收, 此時這個子程序就變成殭屍。
監視特定使用者 • 直接執行 top 指令時, 它會去監視系統中全部的程序, 所以感覺有些零亂。 • 假如只想監控某位特定的使用者, 只需按下 鍵, 然後指定使用者帳號名稱即可:
結束執行中的程序 • 假設發覺某個程序佔用太多系統資源, 或使用者執行規定以外的程式, 則可從 top 內直接將其刪除:
結束執行中的程序 • 除了管理者可刪除任何程序之外, 每個使用者僅能刪除隸屬於自己的程序, 而無法刪除其他使用者的程序。 • top 還有其他的功能, 詳細說明請按 [h] 或 [?] 鍵即可得知。
16-2-2 查詢執行中的程序 - ps指令 • 要查看系統中正在執行的程序時, ps (Process Status) 是經常使用的指令。單獨執行 ps指令時, 只會列出屬於擁有者為自己, 正在執行中的程序:
查詢執行中的程序 - ps指令 • 若加入 "u" 或 "-l" 參數則可觀看較詳細的說明:
查詢執行中的程序 - ps指令 • 觀察其他使用者的程序 • 查看背景執行的程序 • 替程序清單排序 • 搭配其他指令查詢特定程序
觀察其他使用者的程序 • 若想一併查看其他使用者正在執行的程序, 請執行 ps -Al指令:
觀察其他使用者的程序 • 由顯示的訊息中,可得知目前系統中有 UID 編號為 500、501 與 502 共三位其他使用者登入, 並可看到他們正在執行的程序。
查看背景執行的程序 • 單純使用 ps指令, 所觀察到的程序列表, 都是在前景執行的程序。但實際上並非所有程序都在前景中執行, 隱藏在背景裡執行之程序數量也不少。想觀察系統和每位使用者執行中的全部程序, 可加上參數 "aux" 來查看:
替程序清單排序 • ps指令有個 "--sort" 參數, 可將查詢結果依程序執行的時間、PID、UID...等做排序, 再呈現於我們眼前。詳細的使用方法,可執行 man ps指令就能查詢,在此不一一介紹, 僅以下例表示:
搭配其他指令查詢特定程序 • 由於 ps aux指令會列出系統中正在執行的所有程序, 因此反而不易找到特定的程序。若搭配其他指令使用 (如 grep指令), 則可事半功倍:
搭配其他指令查詢特定程序 • 上面的效果類似搭配 "uU" 參數:
16-2-3 刪除執行中的程序- kill 指令 • 要刪除某些程序時, 除了使用top指令的 鍵功能之外, 最簡單的方法就是在文字模式下執行kill指令將其刪除, 通常它會搭配 ps指令使用:
刪除執行中的程序 - kill 指令 • kill指令預設是使用參數 "-15", 這個參數會中斷正在執行的程序, 所以一般情況下只需使用kill指令加上欲刪除程序的 PID, 便可刪除該程序。若遇到無法順利刪除的程序, 就需要再加上其他的參數:
如何將目前登入的 使用者踢出系統? • 當您發現有某個使用者佔用了太多的系統資源, 或是正在進行非法活動, 只要執行以下指令, 就可以將其強制驅離, 踢出系統。假設現在要將已登入系統的使用者 tony 踢出系統, 請先執行 who指令, 找出使用者 tony 登入的終端機代號, 接著再以ps指令, 找出該終端機正在執行的程序中, 程序識別碼 PID 編號最小者:
如何將目前登入的 使用者踢出系統?
如何將目前登入的 使用者踢出系統? • 由於 PID 編號最小的程序, 即為該使用者登入系統時所執行的第一個程序, 通常為其工作環境 Shell 。因此只要執行 kill - 9指令, 將此程序強制刪除, 即可將使用者踢出系統: