您的位置:首页 > 运维架构 > Linux

对linux进程实时进行监控的方法

2015-06-05 16:23 381 查看
刚刚实习,今天就给了个任务是:一个服务器上面的一个进程FGC太大,要求时刻监控该进程的FGC,当FGC大于3000的时候,将这个进程杀死,然后重启这个进程。

具体流程如下:

首先编写shll脚本,脚本如下

#!/bin/bash

pid=`ps aux|grep java | grep 进程的名字 |awk '{print $2}'`

FGC=`jstat -gcutil ${pid} |grep -v 'jstat'|grep -v 'S0'|awk '{print $8}'`

if [ $FGC -gt 3000 ]

then

kill ${pid}

重启该进程

fi

var=`date +%Y-%m-%d-%H-%M`

echo "FGC=$FGC---$var------ok"

脚本解析:$pid获得了一直进程名字的进程号。在linux下执行ps aux可以获得进程的详细信息,如下图所示,可以知道每一行中的第二个字段为进程号,awk '{print $2}的含义就是输出改行的第二个字段的值,grep java | grep
进程的名字的含义是获得输出行含有Java和进程名字的改行数据。



$FGC指的是获得该进程FGC的值,代码的含义与获得进程号的含义一样。



如图所示:第8个字段为FGC的值。

接着判断$FGC是否大于3000,大于3000的时候就杀死该进程,然后重新启动该进程。

最后定义变量记录该脚本执行的时间,从而方便更新日志文件。

最后用crontab将该脚本添加到定时启动即可:

crontab -e 按i进入插入模式,插入:*/3 * * * * cd 脚本的位置 & sh 脚本的名字 >> 日志文件

后面需要强调的是,>> 的意思是每次在日志文件后面追加内容,>的意思是每次脚本执行会清空日志文件的内容,从新写入该日志文件。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: