java 进程 递归kill,编写shell脚本kill掉占用cpu超过90%以上的程序

由于集群用户经常会不懂如何提交作业,将作业直接运行到登录节点上,这样导致登录节点的cpu及内存占用很大,导致其他用户甚至无法登录。所以就想到了一种解决方法,写一个shell脚本,常驻登录节点,监控cpu占用率,如果某一进程占用cpu超过90%,且运行时间超过十五秒,就直接kill掉。shell脚本代码如下:

#!/bin/sh

while true

do

sleep3

#循环查看占用cpu超过90%的进程ID

/bin/ps axf -o "pid %cpu" | awk '{if($2>=90) print $1}' | while read procid

do

#进程详细信息

pro=$(ps -A|grep "\" |sort -k3,3|head -n1)

#获取进程运行的时间,如果大于15秒,设time为1,如若不是则设time为0

time="$(echo $pro|awk '{

split($3,tab,/:/); if (tab[3]>=15) {print 1}else{print 0}

}')"

#如果time1,则kill掉该进程

if [ $time = '1' ];then

kill -9 $procid

fi

done

done

最后运行 nohup ./你写的shell脚本  > cpucheck.log 2>&1 &   以保证它在后台长期运行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值