Shell 脚本采集系统资源:CPU,负载,内存,磁盘

#!/bin/bash

export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
#设置字符集
export.UTF-8

date_=$(date "+%Y-%m-%d %H:%M:%S")

#CPU监控信息获取
#Cpu total
cpu_total=$(grep "cpu " /proc/stat | awk -F ' ' '{total = $2 + $3 + $4 + $5} END {print total}')
#Cpu idle
cpu_idle=$(grep "cpu " /proc/stat | awk -F ' ' '{total = $2 + $3 + $4 + $5} END {print $5}')
#Cpu used
cpu_used=$(grep "cpu " /proc/stat | awk -F ' ' '{total = $2 + $3 + $4 + $5} END {print $5}')
#Cpu userd_rate
cpu_used_rate=$(echo "$cpu_used $cpu_total" |awk '{printf("%.4f",$1/$2)}')

#内存监控信息获取
#Mem total
#mem_total=$(free|sed -n '2p'|awk -F ' ' '{print $2}')
mem_total=`awk '/MemTotal/{total=$2}END{print (total)/1024 "MB"}' /proc/meminfo`
#Mem free
mem_free=$(free|sed -n '2p'|awk -F ' ' '{print $4}')
#Mem used
#mem_used=$(free|sed -n '2p'|awk -F ' ' '{print $3}')
#mem_used_procedure=`awk '/MemTotal/{total=$2}/MemFree/{free=$2}/Buffers/{buffers=$2}/^Cached/{cached=$2}END{print (total-free-buffers-cached)/1024 "MB"}' /proc/meminfo`
#某个进程占用内存信息获取
PID=`ps -ef | grep "进程" | grep -v grep | awk '{print $2}'`
mem_used_procedure=`cat /proc/${PID}/smaps | grep '^Rss' | awk '{sum +=$2} END {print sum/1024}'`
mem_used=`awk '/MemTotal/{total=$2}/MemFree/{free=$2}END{print (total-free)/1024 "MB"}' /proc/meminfo`
#Mem used_rate
mem_used_rate=$(echo "$mem_used $mem_total" |awk '{printf("%.4f",$1/$2)}')

#磁盘监控信息获取
#Disk total
disk_total=$(fdisk -l | grep "Disk /dev/sd" | awk -F '[ :,]+' '{printf "%.0f\n",$5/1072741824}' | awk -v total=0 '{total+=$1}END{printf "%.0f\t",total}'|awk '{print $1}')
#Disk used
disk_used=$(df -k | grep -v "tmpfs" | egrep -A 1 "mapper|sd" | awk 'NF>1{print $(NF-3)}' | awk -v used=0 '{used+=$1}END{printf "%.2f\n",used/1048576}')
#Disk free
disk_free=$(echo "$disk_used $disk_total" |awk '{printf("%.2f",$2-$1)}')
#Disk used_rate
disk_used_rate=$(echo "$disk_used $disk_total" |awk '{printf("%.4f",$1/$2)}')

#负载
load1=`cat /proc/loadavg | awk '{print $1}'`
load5=`cat /proc/loadavg | awk '{print $2}'`
load15=`cat /proc/loadavg | awk '{print $3}'`

#输出成josn格式:
echo "{'CPU_total':'$cpu_total','CPU_idle':'$cpu_idle','CPU_used':'$cpu_used','CPU_used_rate':'$cpu_used_rate','mem_total':'$mem_total','mem_free':'$mem_free','mem_used_procedure':'$mem_used_procedure','mem_used':'$mem_used','mem_used_rate':'$mem_used_rate','disk_total':'$disk_total','disk_used':'$disk_used','disk_free':'$disk_free','disk_used_rate':'$disk_used_rate','load1':'$load1','load5':'$load5','load15':'$load15','time':'$date_'}"
  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值