Linux 系統管理-系統監控

top (查看當前進程實時的使用情況)

top指令可以查看當前進程實時的使用情況、CPU、RAM、I/O使用率等其他資訊

常用參數

  • -u:查看指定用戶運行的進程
  • -p:查看特定進程的使用情況

交互模式下可使用的快捷鍵

  • q:退出
  • c:運行的COMMAND會顯示絕對路徑
  • k:系統會讓你選擇要kill 的進程編號,輸入完進程編號再按enter就能 kill 進程
  • P:按照cpu 排序
  • M:按照ram大小排序
  • h:可以查看可用快捷鍵

顯示的資訊

名稱 定義
PID 進程 ID,是系統用來識別進程的唯一編號
USER 進程所屬的使用者
PR 進程的優先順序
NI 進程的 nice 值
VIRT 進程使用的虛擬記憶體(內存)大小
RES 進程使用的實際記憶體(內存)大小
SHR 進程共享的記憶體量
S 進程的狀態
%CPU 進程使用的 CPU 使用率
%MEM 進程使用的記憶體使用率
TIME+ 進程執行的總時間
COMMAND 進程的命令行

範例

  • 查看root 運行的進程實時的使用情況
    1
    top -u root
  • 查看PID=5的進程實時的使用情況
    1
    top -p 5

history (查看用戶的cmd 使用紀錄)

例如可以在系統崩潰時,排查是哪個指令出問題,或是哪個指令誤刪了文件

每個用戶的歷史紀錄可以在

/home/用戶名/.bash_history 找到

如果想要重新使用指令,除了複製外,可以記住該指令的歷史編號

使用

! 歷史編號

系統就會運行該歷史編號的指令,就不用每次都找得很辛苦

df (磁碟分區的使用狀況)

df指令用來顯示磁碟分區的使用狀況。它會顯示每個磁碟分區的總空間、已使用空間和可用空間

常用參數

  • -h:容量大小以人類容易閱讀的格式輸出(最常用)

  • -t:只顯示指定類型的檔案系統,如: df -t ext4

  • -T:輸出同時也顯示磁碟的檔案系統

  • -k:以 KB 為單位顯示輸出

  • -m:以 MB 為單位顯示輸出

  • -g:以 GB 為單位顯示輸出

顯示的資訊

名稱 定義
Filesystem 進程 ID,是系統用來識別進程的唯一編號
Type 進程 ID,是系統用來識別進程的唯一編號
1k-blocks 進程 ID,是系統用來識別進程的唯一編號
Used 進程 ID,是系統用來識別進程的唯一編號
Available 進程 ID,是系統用來識別進程的唯一編號
Use% 進程 ID,是系統用來識別進程的唯一編號
Mounted on 進程 ID,是系統用來識別進程的唯一編號

範例

  • 以人類容易閱讀的格式輸出

    1
    df -h
  • 顯示特定磁碟的使用情況

    1
    df /
  • 輸出同時也顯示磁碟的檔案系統

    1
    df -T
  • 顯示ext4檔案系統的使用情況

    1
    df -t ext4
  • 以GB為單位輸出

    1
    df -g

du(指定文件或目錄的大小)

du 指令用於顯示指定文件或目錄的大小

常用參數

  • -a:顯示所有文件,包含隱藏文件
  • -h:以人類容易閱讀的格式輸出(最常用)
  • -d N:只顯示目錄結構的 N 層。

範例

  • 顯示當前目錄 與其子目錄的大小

    1
    du .
  • 只顯示當前目錄的大小

    1
    du -d 1 .

free(系統記憶體的使用狀況)

free 指令用來顯示系統記憶體的使用狀況

常用參數

  • -b:以 byte 為單位顯示輸出

  • -k:以 KB 為單位顯示輸出

  • -m:以 MB 為單位顯示輸出

  • -g:以 GB 為單位顯示輸出

  • -t:顯示記憶體跟系統虛擬記憶體的統計情況

  • -s:設定刷新頻率,即時更新記憶體使用情況,如 free -s 1 每秒刷新

顯示資訊

名稱 定義
total 總記憶體大小
used 系統已使用的記憶體大小
free 系統可以被程序立即使用的記憶體大小
shared 多個進程共享的記憶體大小
buffers/cache 緩衝資料的記憶體大小/緩衝磁碟資料的記憶體大小
available 系統可以被程序立即使用的記憶體大小 + 緩衝資料的記憶體大小
swap 系統的虛擬記憶體大小

dmesg(系統啟動時的訊息)

dmesg 指令用於顯示系統啟動時的訊息

  • 用於檢查系統啟動時是否有任何異常訊息。例如,如果系統啟動時出現錯誤訊息,可以使用 dmesg 指令來查看錯誤訊息,以便排除故障

範例

  • 一次只顯示一頁
    1
    dmesg | more

iostat(系統磁碟 I/O 的統計資訊)

iostat 命令用於顯示系統磁碟 I/O 的統計資訊

常用參數

  • -d:顯示所有磁碟的統計資訊
  • -k:以 KB 為單位顯示磁碟 I/O 量
  • -m:以 MB 為單位顯示磁碟 I/O 量
  • -s:指定統計間隔,單位為秒
  • -t:指定要即時更新資訊幾次

顯示資訊

磁碟 讀取 I/O 量 寫入 I/O 量 平均讀取時間 平均寫入時間

範例

  • 顯示所有磁碟的統計資訊,以秒為單位

    1
    iostat
  • 顯示所有磁碟的統計資訊,以 KB 為單位,每隔 5 秒顯示一次,共顯示 10 次:

    1
    iostat -d -k -s 5 -t 10

netstat(網路連線狀態和資訊)

netstat 指令用於顯示網路連線狀態和資訊

常用參數

  • -a:顯示所有連線,包括已啟動和已關閉的連線
  • -v:顯示連線的詳細資料
  • -r:顯示路由表
  • -l:顯示已啟動的連線
  • -t:顯示 TCP 連線
  • -u:顯示 UDP 連線
  • -n:使用ip表示連接,而不是用主機名稱

範例

  • 查看路由表詳細資料

    1
    netstat -rnv
  • 查看所有連線,使用ip表示

    1
    netstat -na

/proc/cpuinfo

這個文件記錄了系統cpu的訊息,如:型號、製造商、主頻、緩存大小、超線程技術是否啟用等。

可以用此指令查看
cat /proc/cpuinfo | more

/proc/meminfo

這個文件記錄了系統記憶體的訊息,如:總記憶體容量、可用記憶體容量、使用中記憶體容量、緩衝區記憶體容量、交換分區容量等

可以用此指令查看
cat /proc/meminfo | more

重要的系統日誌目錄 (/var/log)

boot.log

開機或關機時,一些服務啟動或關閉的訊息

chronyd (NTP)

cron

紀錄crontab這個服務的內容

maillog

紀錄郵件的存取與往來

secure

紀錄登錄系統存取的文件

syslog

事件紀錄程序監控日誌,經常是系統出問題的訊息,Redhat 默認不生成這個日誌

message

紀錄開機時發生的錯誤

httpd

參考

Linux /var/log下的各种日志文件详解


Linux 系統管理-系統監控
https://austin72905.github.io/2023/09/15/linux-system-monitor/
作者
Austin Lin
發布於
2023年9月15日
許可協議