shell小技巧(十八)通过top获取指定进程cpu、内存等信息

脚本将通过top获取指定运行程序的cpu,内存,进程号,名称信息。
按给定时间间隔循环取样,保存于process.txt内
参数1是要获取的进程名称
参数2是指定间隔时间(秒)
代码:

#!/bin/bash

function IsNumber(){

 if [ -z $1 ]; then

#     echo "need var!"

    return 2

 fi

 echo $1 | grep -q '[^0-9]'

af1=$?

if [ $af1 -ge 1 ]; then

  #this is number,output

 #   echo "number"

    return 0

else

  #  echo "not number"

    return 1

fi

}

> process.txt

if [ -z $1 ]; then

   read -p "please input process name:" x

   read -p "please input Interval(number):" y

else

   x=$1

   if [ -z $2 ]; then

     read -p "please input Interval(number):" y

   else

     y=$2

   fi

fi

IsNumber $y

if [ $? -gt 0 ]; then

   echo "Interval variable is not number ,default will be used !"

   echo "It is 2s!"

   y=2

fi

flag=5

while sleep $y 

do

  top -d 2 -n 1 | awk -v var1=$x 'NR>6{if($13==var1)print $2 "\t" $10 "\t" $11 "\t" $13}' >> process.txt

 top -d 2 -n 1 | grep $x

 flagrun=$?

 echo flagrun $flag

  if [ $flagrun -gt 0 ]; then

     if [ $flag -eq 0 ]; then

        echo "process still is not running!will stop!"i

        break;

     fi

     echo "process is not running!will try $flag times !"

     let flag--

  fi

  tail -3 process.txt

done


说明:
1参数1参数2可以运行脚本时给出,否则代码内按提示输入
2.参数2如果输入错误不是数字,则按缺省值2执行
3.参数1代表的进程如果检测不到,会提示并尝试5次,仍未检测到则退出运行

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值