练习:一个判断tomcat的脚本

回复 收藏
本帖最后由 筱影 于 2016-5-27 09:30 编辑

环境
一台服务器上,有8个tomcat 。。tomcat 1 -------tomcat 8

故障
经常会有java的进程CPU使用率达到100%

需求
当某个进程CPU使用率超过100%,先判断是否是java,如果是,再判断是哪个tomcat引起的,然后重启这个tomcat

思路:
1、用top命令截取一行,把这一行中的%CPU ,COMMAND,PID对应的数值取出来
2、对比%CPU是否大于100% ,COMMAND是否为java,PID数值记录下来
3、用ps命令查出对应的PID号下,并确定该PID号是属于哪个tomcat
4、重启这个tomcat

{{{密码回复可见}}}
top.png ps java.png
2016-05-26 09:25 举报
已邀请:
0

筱影

赞同来自:

第一步:
  1. #!/bin/bash
  2. top=`top -b -n1 |sed -n '8'p`
  3. PID=$(echo $top |awk '{print $1}')
  4. CPU=$(echo $top |awk '{print $9}')
  5. COMMAND=$(echo $top |awk '{print $12}')
  6. echo $PID
  7. echo $CPU
  8. echo $COMMAND

0

乐橙306

赞同来自:

本帖最后由 乐橙306 于 2016-5-26 11:58 编辑
  1. [tomcat@aliyun-63 ~]$ cat tomcat_cpu_used_v1.sh
  2. #!/bin/bash

  3. ##check is  ok ?
  4. check_ok() {
  5. if [ $? != 0 ]
  6. then
  7. echo "Error, Check the error log."
  8. exit 1
  9. fi
  10. }


  11. ##root can not run this script.
  12. if [ $USER = root ]
  13. then
  14.         echo "root cann't run this script!please run with other user!"
  15.         exit 1
  16. fi

  17. ##restart  tomcat  (cpu util can change)
  18. #
  19. DIR=`ps aux  |  grep tomcat | awk '$3 > 10 {print $18}' | awk -F '='  '{print $2}'`
  20. for  i in $DIR
  21. do
  22. cd $i
  23. ./bin/shutdown.sh
  24. check_ok
  25. ./bin/startup.sh
  26. check_ok
  27. done
  28. [tomcat@aliyun-63 ~]$
0

shoswj001

赞同来自:


这是自己写的,还是阿里云里面写好的
0

乐橙306

赞同来自:

shoswj001 发表于 2016-5-26 15:57
这是自己写的,还是阿里云里面写好的

你觉得呢 {:6_137:}
0

筱影

赞同来自:


谢谢  虽然你的我用不了  但是 能学到些知识
0

不远晴空

赞同来自:

get
0

inzaghidai

赞同来自:

参考
0

xpgong

赞同来自:

看看
0

黑色的梦

赞同来自:

1
0

蛀牙宅

赞同来自:

{:4_92:}
0

monga

赞同来自:

学习学习
0

Toornix

赞同来自:

看下答案
0

阿杰

赞同来自:

1
0

jonnylin

赞同来自:

学习
0

c641326408

赞同来自:

get
0

pwq18627318744

赞同来自:

学习
0

GaryHuang0113 - 世上无难事,只怕有心人

赞同来自:

观看
0

malong

赞同来自:

学习一下
0

Bullet_Point

赞同来自:

1
0

13805775620

赞同来自:

学习学习
0

So Long

赞同来自:

不错

0

loading丶

赞同来自:

i_f29.gif

0

leirosejay

赞同来自:

学习一下

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: