脚本统计某进程的内存使用大小

#!/bin/bash
memlist=`ps auxf --width=1000 |grep $1|grep -v grep|awk ‘{print $6}‘`;
totalMem=0
for mem in $memlist; do
  
  let "totalMem=$totalMem+mem"
done
echo $totalMem

$1 表示进程名字,是脚本给出的参数。也是zabbix上Item中要指定的。

上面的脚本可以简化:

#!/bin/bash
mem=`ps auxf --width=1000 |grep $1|grep -v grep|awk ‘{sum+=$6}END{print sum}‘`
echo $mem

ps aux命令详解

[[email protected] scripts]# ps auxf --width=1000|more
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          2  0.0  0.0      0     0 ?        S    Jun29   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    Jun29   0:00  \_ [migration/0]
root          4  0.0  0.0      0     0 ?        S    Jun29   0:00  \_ [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S    Jun29   0:00  \_ [stopper/0]
root          6  0.0  0.0      0     0 ?        S    Jun29   0:00  \_ [watchdog/0]
root          7  0.0  0.0      0     0 ?        S    Jun29   0:31  \_ [events/0]
root          8  0.0  0.0      0     0 ?        S    Jun29   0:00  \_ [events/0]
root          9  0.0  0.0      0     0 ?        S    Jun29   0:00  \_ [events_long/0]
root         10  0.0  0.0      0     0 ?        S    Jun29   0:00  \_ [events_power_ef]
root         11  0.0  0.0      0     0 ?        S    Jun29   0:00  \_ [cgroup]
root         12  0.0  0.0      0     0 ?        S    Jun29   0:00  \_ [khelper]
root         13  0.0  0.0      0     0 ?        S    Jun29   0:00  \_ [netns]
root         14  0.0  0.0      0     0 ?        S    Jun29   0:00  \_ [async/mgr]
root         15  0.0  0.0      0     0 ?        S    Jun29   0:00  \_ [pm]
root         16  0.0  0.0      0     0 ?        S    Jun29   0:00  \_ [sync_supers]
root         17  0.0  0.0      0     0 ?        S    Jun29   0:00  \_ [bdi-default]
root         18  0.0  0.0      0     0 ?        S    Jun29   0:00  \_ [kintegrityd/0]
root         19  0.0  0.0      0     0 ?        S    Jun29   0:13  \_ [kblockd/0]
root         20  0.0  0.0      0     0 ?        S    Jun29   0:00  \_ [kacpid]
root         21  0.0  0.0      0     0 ?        S    Jun29   0:00  \_ [kacpi_notify]
root         22  0.0  0.0      0     0 ?        S    Jun29   0:00  \_ [kacpi_hotplug]
root         23  0.0  0.0      0     0 ?        S    Jun29   0:00  \_ [ata_aux]
root         24  0.0  0.0      0     0 ?        S    Jun29   0:00  \_ [ata_sff/0]
root         25  0.0  0.0      0     0 ?        S    Jun29   0:00  \_ [ksuspend_usbd]

USER:进程的属主;
PID :进程的ID;
PPID :父进程;
%CPU:进程占用的CPU百分比;
%MEM:占用内存的百分比;
NI :进程的NICE值,数值大,表示较少占用CPU时间;
VSZ:該进程使用的虚拟內存量(KB);
RSS:該進程占用的固定內存量(KB)(驻留中页的数量);
TTY:該進程在那個終端上運行(登陸者的終端位置),若與終端無關,則顯示(?)。若為pts/0等,則表示由網絡連接主機進程
WCHAN:當前進程是否正在進行,若為-表示正在進行;
START:該進程被觸發启动时间;
TIME:該进程實際使用CPU運行的时间;
COMMAND:命令的名称和参数;

STAT常见状态:

D 无法中断的休眠状态(通常 IO 的进程);
R 正在运行可中在队列中可过行的;
S 处于休眠状态;
T 停止或被追踪;
W 进入内存交换  (从内核2.6开始无效);
X 死掉的进程   (基本很少見);
Z 僵尸进程;
< 优先级高的进程
N 优先级较低的进程
L 有些页被锁进内存;
s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);
+ 位于后台的进程组;

参考资料:http://blog.csdn.net/hanner_cheung/article/details/6081440

时间: 2024-11-08 23:10:40

脚本统计某进程的内存使用大小的相关文章

crond守护进程实现定时监控某进程占有内存的大小

1)添加计划任务 crontab -e会使用某个编辑器打开某个文件,然后在内输入需要执行的计划任务,保存后在/var/spool/cron/crontabs/下会出现以用户名命名的文件 2)计划任务如何添加 该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令.    每个域之间使用空格或者制表符分隔.格式如下:  minute hour day-of-month month-of-year day-of-week commands 除了数字还有几个个特殊的符

通过进程id找到进程对应的容器并统计每个进程的内存占用写到excel里

1 # coding=utf-8 2 import re 3 import os 4 import commands 5 import json 6 import psutil 7 from pyExcelerator import * 8 9 10 def execute(cmd): 11 status, output = commands.getstatusoutput(cmd) 12 if status != 0: 13 raise Exception('status is %s, out

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

Linux系统下,我们可以利用以下命令来获取特定进程的运行情况: cat /proc/$PID/status 其中PID是具体的进程号,这个命令打印出/proc/特定进程/status文件的内容,信息比较多,包含了物理内存/虚拟内存的使用状况,监控进程是否有内存泄露的问题,一般查看进程占用物理内存的情况: VmRSS: xxxkB 可以采用grep命令过滤出我们需要的信息: cat /proc/$PID/status | grep RSS >> "$LOG" #过滤包含RS

Linux 查看进程消耗内存情况总结

在Linux中,有很多命令或工具查看内存使用情况,今天我们来看看如何查看进程消耗.占用的内存情况,Linux的内存管理和相关概念要比Windows复杂一些.在此之前,我们需要了解一下Linux系统下面有关内存的专用名词和专业术语概念: 物理内存和虚拟内存 物理内存:就是系统硬件提供的内存大小,是真正的内存,一般叫做内存条.也叫随机存取存储器(random access memory,RAM)又称作"随机存储器",是与CPU直接交换数据的内部存储器,也叫主存(内存). 虚拟内存:相对于物

如何分析进程的内存占用问题

一共推荐三种分析内存占用的方式 1.vmmap.exe 属于SysinternalsSuite中的工具,很强大,可以方便的查看特定进程的内存总大小(Size).内存的提交大小(Committed).内存专用工作集等(Private WS)等,也可以启动一个进程定时生成快照. 具体各名词介绍可以参考工具的help,或者参考如下文章: vmmap介绍与下载地址:https://technet.microsoft.com/en-us/sysinternals/vmmap vmmap用法介绍:http:

[转]观察进程的内存占用情况

转:http://www.cnblogs.com/bravery/archive/2012/06/27/2560611.html 概述 想必在linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题--你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过top命令查看进程占用了多少内存.这里我们可以看到VIRT.RES和SHR三个重要的指标,他们分别代表什么意思呢?这是本文需要跟大家一起探讨的问题.当然如果更加深入一点,你可能会问进程所占用的那些物理内存都用在了哪些

CentOS7 定时检测进程占用内存大小,执行重启进程操作(xjl456852原创)

在使用CentOS时,个别程序的进程会一直增大,直到宕机.但是这种程序本身有没有更好的版本使用(比如ngrok免费就这样,付费的就没这个问题),所以想写一个脚本定时检测一下这个程序的情况,决定是否需要重启,该重启时重启,没有启动则让他启动. 注:脚本名中最好不要包含ngrokd, 因为脚本执行时自己也会成为一个进程,获取原始ngrokd的进程大小就不能简写为grep "ngrokd"  ,而应改为全路径:grep "/usr/local/ngrok/bin/ngrokd&qu

Windows 7 里进程管理器里面的各列是什么含义?主要是和内存有关的内存-专用工作集,内存-工作集,内存-提交大小???

内存 - 工作集:私人工作集中的内存数量与进程正在使用且可以由其他进程共享的内存数量的总和. 内存 - 峰值工作集:进程所使用的工作集内存的最大数量. 内存 - 工作集增量:进程所使用的工作集内存中的更改量. 内存 - 私人工作集:工作集的子集,它专门描述了某个进程正在使用且无法与其他进程共享的内存数量. 内存 - 提交大小:为某进程使用而保留的虚拟内存的数量. 内存 - 页面缓冲池:由内核或驱动程序代表进程分配的可分页内核内存的数量.可分页内存是可写入其他存储媒体(例如硬盘)的内存. 内存 -

查看进程占用内存大小的几种方法

1. pmap -x pid 2. ps -aux | grep 进程名 ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep 进程名 3. top -d 1 -p pid 4. cat /proc/[pid]/status 查看进程占用内存大小的几种方法