本帖最后由 筱影 于 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
{{{密码回复可见}}}
环境:
一台服务器上,有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
{{{密码回复可见}}}
0
第一步:
- #!/bin/bash
- top=`top -b -n1 |sed -n '8'p`
- PID=$(echo $top |awk '{print $1}')
- CPU=$(echo $top |awk '{print $9}')
- COMMAND=$(echo $top |awk '{print $12}')
- echo $PID
- echo $CPU
- echo $COMMAND
0
本帖最后由 乐橙306 于 2016-5-26 11:58 编辑
- [tomcat@aliyun-63 ~]$ cat tomcat_cpu_used_v1.sh
- #!/bin/bash
- ##check is ok ?
- check_ok() {
- if [ $? != 0 ]
- then
- echo "Error, Check the error log."
- exit 1
- fi
- }
- ##root can not run this script.
- if [ $USER = root ]
- then
- echo "root cann't run this script!please run with other user!"
- exit 1
- fi
- ##restart tomcat (cpu util can change)
- #
- DIR=`ps aux | grep tomcat | awk '$3 > 10 {print $18}' | awk -F '=' '{print $2}'`
- for i in $DIR
- do
- cd $i
- ./bin/shutdown.sh
- check_ok
- ./bin/startup.sh
- check_ok
- done
- [tomcat@aliyun-63 ~]$
编辑回复