Shell脚本整理

Posted codepastry

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell脚本整理相关的知识,希望对你有一定的参考价值。

监视并计算一小时内CPU使用情况

#!/bin/bash
#file name: pcpu_usage.sh
#purpose: 计算1小时内进程的CPU占用情况

#SECS为需要进行监视的总秒数
#UNIT_TIME是取样的时间间隔,单位是秒
SECS=3600
UNIT_TIME=60

STEPS=$(( $SECS / $UNIT_TIME ))

echo "watching CPU usage...";

for((i=0;i<STEPS;i++))
do
  ps -eocomm,pcpu | tail -n +2 >> ./cpu_usage.$$
  sleep $UNIT_TIME
done

echo
echo CPU eaters:

cat ./cpu_usage.$$ | awk { process[$1]+=$2; }
END{
    for(i in process)
    {
      printf("%-20s %s
",i,process[i]);
    }
} | sort -nrk 2 | head

rm ./cpu_usage.$$
  • 输入源:ps -eo comm,pcpu。其中comm标识命令名(command name),pcpu表示CPU使用率(CPU usage in percent)。该命令输出所有进程名及CPU使用率;
  • 使用sleep 60来表示每次统计的迭代时间为60秒;
  • tail -n +2将 ps 输出中头部和COMMAND %CPU去掉;
  • cpu_usage.$$中$$表示当前脚本的进程ID;
  • 使用awk求出每个进程总的CPU使用情况,用一个关联数组统计CPU使用情况,进程名作为数组索引。

以上是关于Shell脚本整理的主要内容,如果未能解决你的问题,请参考以下文章

shell 脚本 片段

用于确保在任何给定时间仅运行一个 shell 脚本的 shell 片段 [重复]

Linux下常用的shell脚本整理

shell整理(34)===date 命令的小脚本

shell整理(35)====模拟用户登录的打印菜单脚本

shell脚本引用expect