unix/linux bash shell定时检测进程内存和CPU利用率,并且以"名称+当前时间"的形式保存下来:
#/bin/bash
LOAD=$(awk '{print $1}' /proc/loadavg)
CPUNUM=$(grep processor /proc/cpuinfo | wc -l)
mkdir /home/log
if [ $(echo "$LOAD > $CPUNUM" | bc) = 1 ]; then
RESULT=$(ps -eo pcpu,pmem,user,args | awk '$1 > 0' | sort -nr)
if [ -n "$RESULT" ]; then
echo "$RESULT" > /home/log/snapshot.$(date +"%Y%m%d%H%M")
fi
fi
/proc/loadavg里面记录的信息和uptime相似
#cat /proc/loadavg
0.00 0.00 0.00 1/178 18965
前三个为 当前一分钟负载,当前5分钟负载,当前15分钟负载。
如果我们的CPU是单核,那么这个负载值为1就是满载;如果我们的CPU为n,那么我们的系统负载为n就是满载,这个shell就是靠这个来判断当前一分钟CPU是否负载,我们使用crontab 设置每分钟都执行一次,注意这样久了你的硬盘可能会爆满,可以解决短时间内的检测。