從PROC檔案系統與SYSFS系統獲得系統運行時資料

來源:互聯網
上載者:User

===================
- 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!”

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.