码迷,mamicode.com
首页 > 系统相关 > 详细

Linux下实现脚本监测特定进程占用内存情况

时间:2018-11-07 18:39:08      阅读:448      评论:0      收藏:0      [点我收藏+]

标签:name   log   echo   方式   div   txt   gre   python   bash   

Linux系统下,我们可以利用以下命令来获取特定进程的运行情况: 

cat /proc/$PID/status

其中PID是具体的进程号,这个命令打印出/proc/特定进程/status文件的内容,信息比较多,包含了物理内存/虚拟内存的使用状况,监控进程是否有内存泄露的问题,一般查看进程占用物理内存的情况:

VmRSS: xxxkB

可以采用grep命令过滤出我们需要的信息:

cat /proc/$PID/status | grep RSS >> "$LOG" #过滤包含RSS的行,并且重定向到参数LOG表示的文件

由于PID号需要通过进程名获取,同样使用grep命令过滤出我们指定进程的进程号:

ps | grep $PROCESS | grep -v ‘grep‘ | awk ‘{print $1;}‘#$PROCESS表示进程名字

  

再设置一个循环,每十秒获取一次信息并写入指定文件,完整的脚本如下:

#!/bin/bash

PROCESS=进程名
LOG="/mnt/memlog.txt"

sleep 10

#删除上次的监控文件
if [ -f "$LOG" ];then 
    rm "$LOG"
fi

#过滤出需要的进程ID
PID=$(ps | grep $PROCESS | grep -v ‘grep‘ | awk ‘{print $1;}‘)

while [ "$PID" != "" ]    
do
    cat /proc/$PID/status | grep RSS >> "$LOG"#过滤出VmRSS行
    sleep 5
    PID=$(ps | grep $PROCESS | grep -v ‘grep‘ | awk ‘{print $1;}‘)
done

 

范例2

shell脚本

#!/bin/bash
pid=$1  #获取进程pid
echo $pid
interval=1  #设置采集间隔
while true
do
    echo $(date +"%y-%m-%d %H:%M:%S") >> proc_memlog.txt
    cat  /proc/$pid/status|grep -e VmRSS >> proc_memlog.txt    #获取内存占用
    cpu=`top -n 1 -p $pid|tail -2|head -1|awk ‘{ssd=NF-4} {print $ssd}‘`    #获取cpu占用
    echo "Cpu: " $cpu >> proc_memlog.txt
    echo $blank >> proc_memlog.txt
    sleep $interval
done

  

调用方式

$ sh shellName.sh [pid]
#exp:
sh monitor.sh 1234

  

  

 

Linux下实现脚本监测特定进程占用内存情况

标签:name   log   echo   方式   div   txt   gre   python   bash   

原文地址:https://www.cnblogs.com/saryli/p/9924544.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!