===================
- PROC檔案系統介紹
===================
; 顯示記憶體資訊,對對應命令: vmstat/free
$ cat /proc/meminfo
$ cat /proc/vmstat
$ cat /proc/vmmemctl
; 顯示裝置相關資訊
$ cat /proc/devices
; 顯示磁碟相關資訊,第二條命令顯示了分區名稱,主要裝置號與次要裝置號,對應命令: fdisk -l
$ cat /proc/diskstats
$ cat /proc/partitions
; 顯示啟動時間
$ cat /proc/uptime
$ cat /proc/version
; 顯示系統中斷以及相關資訊,用於查看裝置所請求的IRQ中斷,其中'I8042'為鍵盤
; 第二個命令顯示系統IO所佔用的位址範圍
; 第三個命令查看系統裝置讀寫的地址空間,編程會用得著
$ cat /proc/interrupts
$ cat /proc/ioports
$ cat /proc/iomem
; 查看CPU資訊,查看CPU對指令集的支援
$ cat /proc/cpuinfo | awk '/flags/'
$ cat /proc/cpuinfo | awk '/vendor/'
$ cat /proc/cpuinfo | awk '/MHz/'
; 查看核心所編譯的檔案系統,即,查看核心所支援的檔案系統
$ cat /proc/filesystems
; 查看系統裝載的模組,對應命令: lsmod
$ cat /proc/modules
; 查看系統平均負載
$ cat /proc/loadavg
; 查看系統啟動命令列,傳送到核心的命令列參數
$ cat /proc/cmdline
; 系統調用列表
$ cat /proc/kallsyms
+ 網路
; 顯示系統ARP表,"HWADDR"全0表示IP地址未被佔用
$ cat /proc/net/arp
; 顯示SNMP相關資訊,上面一行表示各個欄位,下面一行表示值,以下同
$ cat /proc/net/snmp
; 顯示介面總流量
$ cat /proc/net/dev
; 顯示路由表,注意,這裡顯示的不是點分10進位,而10完全16進位
$ cat /proc/net/route
; 顯示無線相關資訊,包含接收到的AP,訊號品質等
$ cat /proc/net/wireless
+ 進程<CPU/IO/Fd>
; 基準目錄<vw>: /proc/#Pid/
; 查看記憶體映射表,包括其對動態連結程式庫的引用,堆棧的位置,可以用於故障排除
$ cat $vw/maps
$ cat $vw/smaps
; 查看進程運作狀況,如SLEEP參數表明了進程的繁忙程度
$ cat $vw/status
; 查看進程的IO情況,也可以通過此查看進程是否為IO密集型進程
$ cat $vw/io
; 查看進程開啟的檔案,對對應命令: lsof
$ ls $vw/fd
; 查看進程工作目錄
$ ls -l $vw/cwd
; 查看進程可執行檔
$ ls -l $vw/exe
; 查看傳入進程的環境變數
$ cat $vw/environ
; 查看傳入進程的命令列
$ cat $vw/cmdline | tr "\000" "\n"
; 查看對進程的限制,如開啟檔案數,運行作業數等
$ cat $vw/limits
; 查看進程鎖定的元素
$ cat $vw/locks
+ 裝置
; 查看光碟機相關資訊,注意DRIVENAME,進行掛載時用得著
$ cat /proc/sys/dev/cdrom/info
+ 匯流排
; 查看PCI匯流排,對應命令: lspci/setpci
$ cat /proc/bus/pci/devices
; 查看USB匯流排,對應命令: lsusb
$ cat /proc/bus/usb/devices
; 查看鍵盤,滑鼠,擴音器
$ cat /proc/bus/input/devices
$ cat /proc/bus/input/handler
; 查看SCSI匯流排
$ cat /proc/scsi/scsi
; 查看SCSI裝置
$ cat /proc/scsi/device_info
=====================
* SYS 檔案系統
=====================
; 查看網卡原始MAC
$ cat /sys/class/net/ethX/address
; 查看網卡統計資料
$ cat /sys/class/net/ethX/statistics/*
; 查看介面狀態
$ cat /sys/class/net/ethX/operstate
舉個小例子
這段代碼統計在10秒內ETH0介面接收的網路流量,單位是BPS
#!/bin/bash
cd /sys/class/net/eth0/statistics
startRX=`cat rx_bytes`
sleep 10
endRX=`cat rx_bytes`
bytesTotal=`expr $endRX - $startRX`
bps=`expr $bytesTotal '/' 10`
echo "The average traffic is RX: ${bps}Bytes/sec"
後記:從上文可以看到,LINUX效能資料收集工具均是從/PROC檔案系統讀取效能資料,另外,既然已經知道系統效能資料來源,在系統中沒有安裝這些工具的情況下,我們也可以自行編寫指令碼進行資料擷取了,另外,在對PROC檔案系統不瞭解的情況下,不可對PROC檔案系統中的任何檔案進行寫操作,特別是線上的系統,否則本人概不負責
作者 “NOTHING IS SERIOUS!”