shell限制CPU和内存占用率

post by rocdk890 / 2013-7-24 9:20 Wednesday linux技术
  相信很多人在管理服务器的时候,会看到cpu使用率时不时的上100%,在进行优化无效,公司不给升级更好的硬件配置,那我们只能靠自己来让服务器更加稳定.
  
脚本内容:
vi limit.sh
#!/bin/sh
  UPID=`top -bn 1 | grep "^ *[1-9]" | awk '{ if($9 > 20 || $10 > 25 && id -u $2 > 500) print $1}'`
  for PID in $UPID
  do
  renice +10 $PID
  echo "renice +10 $PID"
  done

我对上面的脚本进行了修改,可以让其针对整个服务器的进程进行限制.
修改后的脚本:
#!/bin/sh
  UPID=`top -bn 1 | grep "^ *[1-9]" | awk '{ if($9 > 50 || $10 > 25 ) print $1}'`
  for PID in $UPID
  do
  renice +10 $PID
  echo "renice +10 $PID"
  done

可以将这个脚本放到cron中运行,让其每分钟检查一次:
chmod +x limit.sh
vi /etc/crontab
*/1 * * * * /bin/sh /root/soft_shell/limit.sh

ps:
n : 更新的次数,完成后将会退出 top
b : 批次档模式,搭配 “n” 参数一起使用,可以用来将 top 的结果输出到档案内
那么top -bn 1 就是获取一次,top的输出结果。
grep "^*[1-9]" : 是为了直接获取PID号,排除掉表头等信息。
awk '{ if($9 > 20 || $10 > 25 && id -u $2 > 500) print $1}'  :
取得cpu使用率大于20%或者内存使用率大于25%,且用户uid大于500的进程pid。

参考地址:

夜空- 本站版权
1、本站所有主题由该文章作者发表,该文章作者与夜空享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和夜空的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:blog.slogra.com/post-409.html

标签: 限制 crontab crond shell 内存 使用率 cpu

评论: