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