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

简介:
1
2
3
4
5
6
7
8
#!/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中要指定的。


上面的脚本可以简化:

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


ps aux命令详解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@ZabbixServer 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);
+ 位于后台的进程组;










本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/1833505,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
消息中间件 存储 网络协议
从零开始掌握进程间通信:管道、信号、消息队列、共享内存大揭秘
本文详细介绍了进程间通信(IPC)的六种主要方式:管道、信号、消息队列、共享内存、信号量和套接字。每种方式都有其特点和适用场景,如管道适用于父子进程间的通信,消息队列能传递结构化数据,共享内存提供高速数据交换,信号量用于同步控制,套接字支持跨网络通信。通过对比和分析,帮助读者理解并选择合适的IPC机制,以提高系统性能和可靠性。
441 14
|
6月前
麒麟系统mate-indicators进程占用内存过高问题解决
【10月更文挑战第7天】麒麟系统mate-indicators进程占用内存过高问题解决
714 2
|
3月前
|
消息中间件 Linux
Linux:进程间通信(共享内存详细讲解以及小项目使用和相关指令、消息队列、信号量)
通过上述讲解和代码示例,您可以理解和实现Linux系统中的进程间通信机制,包括共享内存、消息队列和信号量。这些机制在实际开发中非常重要,能够提高系统的并发处理能力和数据通信效率。希望本文能为您的学习和开发提供实用的指导和帮助。
265 20
|
5月前
|
Linux
如何在 Linux 系统中查看进程占用的内存?
如何在 Linux 系统中查看进程占用的内存?
817 58
|
4月前
|
运维 监控 Ubuntu
【运维】如何在Ubuntu中设置一个内存守护进程来确保内存不会溢出
通过设置内存守护进程,可以有效监控和管理系统内存使用情况,防止内存溢出带来的系统崩溃和服务中断。本文介绍了如何在Ubuntu中编写和配置内存守护脚本,并将其设置为systemd服务。通过这种方式,可以在内存使用超过设定阈值时自动采取措施,确保系统稳定运行。
162 4
|
4月前
|
C语言 开发者 内存技术
探索操作系统核心:从进程管理到内存分配
本文将深入探讨操作系统的两大核心功能——进程管理和内存分配。通过直观的代码示例,我们将了解如何在操作系统中实现这些基本功能,以及它们如何影响系统性能和稳定性。文章旨在为读者提供一个清晰的操作系统内部工作机制视角,同时强调理解和掌握这些概念对于任何软件开发人员的重要性。
|
4月前
|
Linux 调度 C语言
深入理解操作系统:从进程管理到内存优化
本文旨在为读者提供一次深入浅出的操作系统之旅,从进程管理的基本概念出发,逐步探索到内存管理的高级技巧。我们将通过实际代码示例,揭示操作系统如何高效地调度和优化资源,确保系统稳定运行。无论你是初学者还是有一定基础的开发者,这篇文章都将为你打开一扇了解操作系统深层工作原理的大门。
|
5月前
|
算法 调度 开发者
深入理解操作系统:从进程管理到内存分配
本文旨在为读者提供一个深入浅出的操作系统知识之旅,从进程管理的基础概念出发,探索内存分配的策略与技巧。我们将通过实际代码示例,揭示操作系统背后的逻辑与奥秘,帮助读者构建起对操作系统工作原理的直观理解。文章不仅涵盖理论知识,还提供实践操作的指导,使读者能够将抽象的概念转化为具体的技能。无论你是初学者还是有一定基础的开发者,都能在这篇文章中找到有价值的信息和启发。
|
5月前
|
算法 调度 C++
深入理解操作系统:从进程管理到内存分配
【10月更文挑战第42天】本文将带你进入操作系统的神秘世界,探索其核心概念和关键技术。我们将从进程管理开始,了解操作系统如何协调和管理多个程序的运行;然后,我们将深入研究内存分配,看看操作系统如何有效地分配和管理计算机的内存资源。通过这篇文章,你将获得对操作系统工作原理的深入理解,并学会如何编写高效的代码来利用这些原理。
|
1月前
|
存储 缓存 算法
JVM简介—1.Java内存区域
本文详细介绍了Java虚拟机运行时数据区的各个方面,包括其定义、类型(如程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区和直接内存)及其作用。文中还探讨了各版本内存区域的变化、直接内存的使用、从线程角度分析Java内存区域、堆与栈的区别、对象创建步骤、对象内存布局及访问定位,并通过实例说明了常见内存溢出问题的原因和表现形式。这些内容帮助开发者深入理解Java内存管理机制,优化应用程序性能并解决潜在的内存问题。
174 29
JVM简介—1.Java内存区域

热门文章

最新文章

相关实验场景

更多
下一篇
oss创建bucket