shell獲取系統運行狀態、軟硬件信息

主要內容:使用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 顯示內存空間的統計信息,對分析虛擬內存行爲很有用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章