对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 脚本的名字 >> 日志文件
后面需要强调的是,>> 的意思是每次在日志文件后面追加内容,>的意思是每次脚本执行会清空日志文件的内容,从新写入该日志文件。
具体流程如下:
首先编写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 脚本的名字 >> 日志文件
后面需要强调的是,>> 的意思是每次在日志文件后面追加内容,>的意思是每次脚本执行会清空日志文件的内容,从新写入该日志文件。
相关文章推荐
- linux内存管理源码分析 - 页框分配器
- linux serial构架分析及驱动开发(5)
- linux serial构架分析及驱动开发(6)
- linux serial构架分析及驱动开发(4)
- linux serial构架分析及驱动开发(3)
- linux serial构架分析及驱动开发(2)
- VMWare克隆或复制Linux虚拟机后无法上网的解决
- linux 删除文件夹及其内容,显示文件路径
- Linux iostat监测IO状态
- linux命令行界面下手工设置ip
- linux下数字转成字符串
- linux程序设计——文件操作(第三章)
- linux常用命令之login命令
- CentOS6.5分区与文件系统
- linux下打包zip文件
- 在Linux中修复“fatal error: x264.h: No such file or directo”错误的方法
- posix 消息队列
- 在Linux系统下使用tespeed应用测试网速的方法
- CentOS【6.6版本和7版本】安装sendmail及设置【这里面的所有步骤走肯定可以配置出来】
- (转)linux用文件锁实现保证一个程序只能启动一个进程