當你已經逐漸熟悉 Linux 後,你就會在 Linux 系統中安裝很多個服務,例如 MQTT、MariaDB、Grafana...等等,但是當你啟用這些服務的時候,你會發現資源會被吃好吃滿,我當初用一台 Raspberry Pi 裝了 MQTT 跟 Grafana 常常因為資源被吃滿,而導致畫面卡住,最後發現原來是因為我的 Raspberry Pi 的記憶體只有 2G,所以才會這樣子,不過也有可能是自己太菜而導致的,那今天就來跟大家分享有哪些工具可以讓你時時刻刻關心自己的硬體是否有被吃滿。
htop是Unix系統的程序監控工具,在終端機(terminal)介面中以文字的方式顯示,可以顯示每個程式完整的執行參數,或以行程樹(process tree)的方式顯示,若要管理多個行程時,也可以一次選擇多個行程批次處理簡單說就像是Windows內建的工作管理員。
使用方式
安裝 htop
sudo apt install htop
使用 htop
htop
你就能在終端看到此畫面
其中這裡有兩個部分,首先上半部 !
在監控畫面的最上方,是以文字圖像來顯示的系統狀態,以下分別為它們的名稱與功能
| 名稱 | 功能 |
|---|---|
| 0~7 | 為 CPU 使用率,可以看到目前這台 Linux 有 7 個 CPU 核心的使用率(這裡的核心數量不一定都一樣,每台設備的規格都不一樣) |
| MEM | 記憶體使用率 |
| swap(Swp) | 空間使用率 |
| Tasks | 表示目前系統中有多少程序,以及有多少程序正在執行(running) |
| Load average | 代表系統在1分鐘,5分鐘,15分鐘間的平均負載。數值越高代表系統負載越大 |
| Uptime | 表示系統運行的時間,例如這台機器運行了533天又18小時。超過100天就會出現個驚嘆號(!) |
再來是下半部 !
| 名稱 | 功能 |
|---|---|
| PID | Process ID,程序編號 |
| USER | 開啟程序的使用者名稱 |
| PRI | Priority,Linux kernal排程優先順序,數值從0(最高優先權)到139(最低優先權) |
| NI | Niceness,數值從-20(最高優先權)到19(最低優先權) |
| VIRT | Virtual memory usage,虛擬記憶體用量 |
| RES | Resident memory usage,常駐記憶體用量 |
| SHR | Shared memory usage,共享記憶體用量 |
| S | Process state,程序狀態,同時也有不同的狀態,D:不可中斷的睡眠狀態(例如IO)、R:執行中或可執行、S:可中斷的睡眠、T:工作停止、t:除錯中斷、Z:Zombie Process,殭屍程序 |
| CPU% | CPU使用率 |
| MEM% | 記憶體使用率 |
| TIME+ | 程序執行時間 |
| Comamnd | 執行程序的命令 |
netstat 命令是一個監控網路數據包傳入和傳出的統計界面的命令行工具。它對於許多系統管理員去監控網路性能和解決網路相關問題是一個非常有用的工具。
使用方式
安裝 netstat
sudo apt install net-tools
啟動 netstat
netstat
成功啟動後你會看到以下畫面
指令可用的參數
| 參數名稱 | 功能 |
|---|---|
| -a | 顯示所有監聽、非監聽的Socket連線,包含連接埠,因為資訊量多,所以常和別的參數或grep搭配使用 |
| -n | 直接以數字形式顯示位址或協定,而不去解析主機、連接埠或使用者名稱 |
| -s | 顯示每種協定的統計摘要資訊 |
| -r | 顯示核心的路由表 |
| -i | 顯示所有的網路卡資訊 |
| -l | 只顯示狀態是Listening的Socket |
| -t | 只顯示TCP的連線資訊 |
| -u | 只顯示UDP的連線資訊 |
| -p | 顯示Socket是被哪個PID/程式所使用 |
| -e | 顯示額外的資訊 |
| -c | 連續輸出連線資訊,一秒一次 |
透過 iostat 功能方便查看 CPU、網卡、tty設備、磁盤、CD-ROM 等等設備的活動情況, 負載信息。
使用方式
安裝 iostat
sudo apt install sysstat
啟動 iostat
iostat
成功啟動後將會看到以下畫面
它們的功能分別是
| 名稱 | 功能 |
|---|---|
| %user | CPU處在用戶模式下的時間百分比。 |
| %nice | CPU處在帶NICE值的用戶模式下的時間百分比。 |
| %system | CPU處在系統模式下的時間百分比。 |
| %iowait | CPU等待輸入輸出完成時間的百分比 |
| %steal | 管理程序維護另一個虛擬處理器時,虛擬CPU的無意識等待時間百分比 |
| %idle | CPU空閒時間百分比 |
同時指令還可以加一些參數
| 參數名稱 | 功能 |
|---|---|
| -C | 顯示CPU使用情況 |
| -d | 顯示磁碟使用情況 |
| -k | 以 KB 為單位顯示 |
| -m | 以 M 為單位顯示 |
| -N | 顯示磁盤陣列(LVM) 信息 |
| -n | 顯示NFS 使用情況 |
| -p [磁碟] | 顯示該磁碟和分區的情況 |
| -t | 顯示終端和CPU的信息 |
| -x | 顯示詳細信息 |
| -V | 顯示版本信息 |
希望大家看到這篇的時候,可以更加認識以上這些監控系統,每個監控系統都有各自在行的部分,希望大家可以更好的去運用它們,也歡迎大家跟我分享有哪些更好用的監控系統,共勉之。
https://matthung0807.blogspot.com/2019/06/linux-htop.html
https://jasonblog.github.io/note/linux_tools/iostat.html
https://hackmd.io/@CSL/rJs2lJ4ma
https://www.jinnsblog.com/2020/12/linux-netstat-network-status.html