主要內容:使用shell scripts 獲取系統運行狀態、軟硬件信息(cpu負載、內存使用率、swap使用率、io速率、網絡流量、軟件包版本)。
1、shell腳本
$ cat sysstat.sh
#!/bin/bash
#
#使用shell scripts 獲取系統運行狀態、軟硬件信息(cpu負載、內存使用率、swap使用率、io速率、硬盤空間、網絡流量、軟件包版本)。
#
#cpu負載
cpuload=(`cat /proc/loadavg | awk '{print $1,$2,$3}'`)
#內存使用
mem_usage=(`awk '/MemTotal/{total=$2}/MemFree/{free=$2}/Buffers/{buffers=$2}/^Cached/{cached=$2}END{print (total-free-buffers-cached)/1024}' /proc/meminfo`)
#swap使用
swap_usage=`awk '/SwapTotal/{total=$2}/SwapFree/{free=$2}END{print (total-free)/1024}' /proc/meminfo`
#io
io=(`awk '/pgpgin/{pgin=$2}/pgpgout/{pgout=$2}END{print pgin,pgout}' /proc/vmstat`)
#硬盤空間
df_usage=`df |awk '{print "\t"$1"\t"$5"\t"$2}'`
#網絡流量
traffic_be=(`awk 'BEGIN{ORS=" "}/enp2s0/{print $2,$10}' /proc/net/dev`)
echo "testing eth , please wait , 10s"
sleep 10
traffic_af=(`awk 'BEGIN{ORS=" "}/enp2s0/{print $2,$10}' /proc/net/dev`)
netin=$(( (${traffic_af[0]}-${traffic_be[0]})/8/5 ))
netout=$(( (${traffic_af[1]}-${traffic_be[1]})/8/5 ))
#軟件信息
package=`rpm -qa`
#輸出信息
(echo -e "cpu_load[1,5,15]: ${cpuload[0]}\t${cpuload[1]}\t${cpuload[2]}"
echo "mem_usage:${mem_usage}"
echo "swap_usage: ${swap_usage}"
echo -e "ioin:${io[0]}\tioout:${io[1]}"
echo "df_usage:${df_usage}"
echo -e "netin:${netin}\tnetout:${netout}"
echo -e "package:\n$package")>sysstat.log
運行結果:
$ cat sysstat.log
cpu_load[1,5,15]: 0.00 0.01 0.05
mem_usage:421.629
swap_usage: 0
ioin:228816 ioout:5452386
df_usage: Filesystem Use% 1K-blocks
/dev/mapper/centos-root 14% 52403200
devtmpfs 0% 914912
tmpfs 0% 924668
tmpfs 1% 924668
tmpfs 0% 924668
/dev/mapper/centos-home 1% 257336560
/dev/sda1 25% 508588
netin:588 netout:3
package:
lvm2-2.02.115-3.el7.x86_64
filesystem-3.2-18.el7.x86_64
tuned-2.4.1-1.el7.noarch
linux-firmware-20140911-0.1.git365e80c.el7.noarch
openssh-server-6.6.1p1-11.el7.x86_64
glibc-2.17-78.el7.x86_64
selinux-policy-targeted-3.13.1-23.el7.noarch
……
2、/proc/目錄
- N pid爲N的進程
- acpi 電源管理
- asound 聲卡
- buddyinfo 內存可用塊
- bus 總線
- cgroups 系統支持的cgroup子系統
- cmdline 啓動時傳遞給kernel的參數信息
- consoles 控制檯
- cpuinfo cpu的信息
- crypto 內核使用的所有已安裝的加密密碼及細節
- devices 已經加載的設備並分類
- diskstats 取得磁盤信息
- dma 已註冊使用的ISA DMA頻道列表
- driver 驅動信息
- execdomains Linux內核當前支持的execution domains
- fb 幀緩衝設備列表,包括數量和控制它的驅動
- filesystems 內核當前支持的文件系統類型
- fs 文件系統信息
- interrupts x86架構中的每個IRQ中斷數
- iomem 每個物理設備當前在系統內存中的映射
- ioports 一個設備的輸入輸出所使用的註冊端口範圍
- irq 中斷請求設備信息
- kallsyms 內核符號表
- kcore 代表系統的物理內存,存儲爲核心文件格式,裏邊顯示的是字節數,等於RAM大小加上4kb
- keys
- key-users
- kmsg 記錄內核生成的信息,可以通過/sbin/klogd或/bin/dmesg來處理
- kpagecount
- kpageflags
- loadavg 根據過去一段時間內CPU和IO的狀態得出的負載狀態,與uptime命令有關
- locks 內核鎖住的文件列表
- mdstat 多硬盤,RAID配置信息(md=multiple disks)
- meminfo RAM使用的相關信息
- misc 其他的主要設備(設備號爲10)上註冊的驅動
- modules 所有加載到內核的模塊列表
- mounts 系統中使用的所有掛載
- mtrr 系統使用的Memory Type Range Registers (MTRRs)
- net 網卡設備信息
- pagetypeinfo
- partitions 分區中的塊分配信息
- sched_debug
- scsi scsi設備信息
- self 鏈接到當前正在運行的進程
- slabinfo 系統中所有活動的 slab 緩存信息
- softirqs
- stat 所有的CPU活動信息
- swaps 交換空間的使用情況
- sys
- sysrq-trigger 使用echo命令來寫這個文件的時候,遠程root用戶可以執行大多數的系統請求關鍵命令,就好像在本地終端執行一樣。要寫入這個文件,需要把/proc/sys/kernel/sysrq不能設置爲0。這個文件對root也是不可讀的
- sysvipc
- timer_list
- timer_stats
- tty tty設備信息
- uptime 系統已經運行了多久
- version Linux內核版本和gcc版本
- vmallocinfo
- vmstat 虛擬內存統計信息
- zoneinfo 顯示內存空間的統計信息,對分析虛擬內存行爲很有用