LINUX进程内存占用查看命令

(1)top使命

 代码如下 复制代码

$ top -u oracle

1、top命令

 代码如下 复制代码
top -d 1 -p pid [,pid ...] //设置为delay 1s,默认是delay 3s

如果想根据内存使用量进行排序,可以shift + m(Sort by memory usage)

(2)pmap

可以根据进程查看进程相关信息占用的内存情况,(进程号可以通过ps查看)如下所示:

 代码如下 复制代码
$ pmap -d 14596

(3)ps
  
如下例所示:

 代码如下 复制代码
$ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid'  其中rsz是是实际内存
$ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep oracle |  sort -nrk5

其中rsz为实际内存,上例实现按内存排序,由大到小

静态查看一个进程的内存使用

1、pmap命令

 代码如下 复制代码
pmap pid

2、ps命令

 代码如下 复制代码
ps aux|grep process_name

3、查看/proc/process_id/文件夹下的status文件

 代码如下 复制代码
Name:   php
State:  R (running)
SleepAVG:       0%
Tgid:   21574
Pid:    21574
PPid:   10005
TracerPid:      0
Uid:    1000    1000    1000    1000
Gid:    100     100     100     100
FDSize: 256
Groups: 16 100
VmPeak:   161740 kB
VmSize:   161740 kB
VmLck:         0 kB
VmHWM:    107144 kB
VmRSS:    107144 kB
VmData:   106192 kB
VmStk:        84 kB
VmExe:      5588 kB
VmLib:      7884 kB
VmPTE:       268 kB
Threads:        1
SigQ:   0/69632
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000001000
SigCgt: 00000001818040a7
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
Cpus_allowed:   00000000,00000000,00000000,0000000f
Mems_allowed:   1

任务虚拟地址空间的大小 VmSize
应用程序正在使用的物理内存的大小 VmRSS

查看内存我们一般用free命令:

 代码如下 复制代码

[root@scs-2 tmp]# free
             total       used       free     shared    buffers     cached
Mem:       3266180    3250004      16176          0     110652    2668236
-/+ buffers/cache:     471116    2795064
Swap:      2048276      80160    1968116

下面是对这些数值的解释:
total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。
第三行(-/+ buffers/cached):
used:已使用多大。
free:可用有多少。
第四行就不多解释了。
区别:第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。 这两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是16176KB,已用内存是3250004KB,其中包括,内核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.
第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。

占用内存的测量

测量一个进程占用了多少内存,linux为我们提供了一个很方便的方法,/proc目录为我们提供了所有的信息,实际上top等工具也通过这里来获取相应的信息。

 代码如下 复制代码

/proc/meminfo 机器的内存使用信息

/proc/pid/maps pid为进程号,显示当前进程所占用的虚拟地址。

/proc/pid/statm 进程所占用的内存

[root@localhost ~]# cat /proc/self/statm

654 57 44 0 0 334 0

输出解释

CPU 以及CPU0。。。的每行的每个参数意思(以第一行为例)为:

参数 解释 /proc//status

 代码如下 复制代码

Size (pages) 任务虚拟地址空间的大小 VmSize/4

Resident(pages) 应用程序正在使用的物理内存的大小 VmRSS/4

Shared(pages) 共享页数 0

Trs(pages) 程序所拥有的可执行虚拟内存的大小 VmExe/4

Lrs(pages) 被映像到任务的虚拟内存空间的库的大小 VmLib/4

Drs(pages) 程序数据段和用户态的栈的大小 (VmData+ VmStk )4

dt(pages) 04

查看机器可用内存

 代码如下 复制代码

/proc/28248/>free

total used free shared buffers cached

Mem: 1023788 926400 97388 0 134668 503688

-/+ buffers/cache: 288044 735744

Swap: 1959920 89608 1870312

我们通过free命令查看机器空闲内存时,会发现free的值很小。这主要是因为,在linux中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,以方便下次使用。但实际上这些内存也是可以立刻拿来使用的。

所以 空闲内存=free+buffers+cached=total-used

时间: 2024-09-24 20:43:43

LINUX进程内存占用查看命令的相关文章

查看LINUX进程内存占用情况

  (1)top top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器 可以直接使用top命令后,查看%MEM的内容.可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令: $ top -u oracle 内容解释: PID:进程的ID USER:进程所有者 PR:进程的优先级别,越小越优先被执行 NInice:值 VIRT:进程占用的虚拟内存 RES:进程占用的物理内存 SHR:进程

怎样正确查看Linux的内存占用情况

做了个24小时的稳定性测试,探讨了Linux的Mem使用情况: 看内存最方便的命令是free -m,如: [root@host ~]# free -m total used free shared buffers cached Mem: 1024 1005 19 0 9 782 -/+ buffers/cache: 212 811 Swap: 996 0 995 [root@host ~]# 从上看出这个Linux系统一共有内存1024M,但当前Linux 系统已经占用的内存有多少呢?大多数用户

linux服务器内存占用过大解决办法

今天到公司按照惯例检查了下所有服务器的状态,发现有台服务器的内存占用比平常大很多,如下图 马上qq上问了下程序开发是否最近这1-2天改了什么东西,在得知没有改什么的情况下,马上重启了下php-fpm和nginx,重启之后看了下,内存释放出了1G,但这还不行,因为这台服务器是8G内存,平时最多使用4G多的样子,想今天使用到了7G多都快把服务器内存占用完了,很明显是不正常的,继续进行检查.   在检查过程中,我使用了top来看到底是哪个进程占用内存最大,看了近1分钟没有发现什么,然后使用命令查看占用

记一次Linux系统内存占用较高得排查

背景:收到报警,系统的内存使用率触发阈值(部分图是后补的) 1,登陆系统,使用命令查看内存分配 top 按M free -m atop 看下内存分配(cat /proc/meminfo 也可以看到一些细化的内存使用信息) 2,发现cache才1.7g,slab非常高,4.4g ,slab内存简单理解为是系统占用的 使用slabtop继续分析 3,看到proc_inode_cache使用的最多,这个代表是proc文件系统的inode的占用的. 4,查进程,但是进程不多,再查线程,可以通过如下命令进

windows系统中端口占用查看命令netstat

.查看所有的端口占用情况 C:>netstat -ano Microsoft Windows XP [版本 5.1.2600] (C) 版权所有 1985-2001 Microsoft Corp. C:Documents and SettingsAdministrator>netstat -ano Active Connections   Proto  Local Address          Foreign Address        State           PID   TCP

XP系统下ekrn.exe进程内存占用100%怎么办

不少用户安装完WinXP系统后,总是发现进程里有个程序ekrn.exe,经常都会占用率100%,ekrn.exe是东西呢?其实它是诺顿杀毒软件中的一个反病毒相关程序,很多WinXP正版光碟都是自带安装了诺顿杀毒软件,因此才会出现上述问题.那么如何解决该问题呢?我们可以从以下方面着手. ekrn.exe内存占用100%时,解决步骤: 1.确定你已经安装了微软官方发布的WinXP所有的SP2补丁(其中包括有Svchost.exe系列问题的BUG补丁,不是指SP3哈). 2.暂停EAV全部监控.几秒之

linux进程的前后台切换命令与方法

在管理服务器的过程中,经常在编辑这个文件的时候,突然要查看其它的信息,这个是时候,通常的做法是退出编辑,然后去查看信息. 但如果结合了fg与bg命令,能让我们的工作效率更高. 涉及到进程间切换的命令有如下: Ctrl+C 终止并退出前台命令的执行,回到SHELL Ctrl+Z 暂停前台命令的执行,将该进程放入后台,回到SHELL jobs 查看当前在后台执行的命令,可查看命令进程号码 & 运行命令时,在命令末尾加上&可让命令在后台执行 fg N 将命令进程号码为N的命令进程放到前台执行,同

查看Linux下系统资源占用常用命令

一,top命令 1.作用 top命令用来显示执行中的程序进程,使用权限是所有用户. 2.格式 top [-] [d delay] [q] [c] [S] [s] [i] [n] 3.主要参数 d:指定更新的间隔,以秒计算. q:没有任何延迟的更新.如果使用者有超级用户,则top命令将会以最高的优先序执行. c:显示进程完整的路径与名称. S:累积模式,会将己完成或消失的子行程的CPU时间累积起来. s:安全模式. i:不显示任何闲置(Idle)或无用(Zombie)的行程. n:显示更新的次数,

linux进程资源占用高原因分析命令记录

1.查看进程的线程: ps -eLf|egrep 'gateserver|UID' 2.跟踪线程调用: strace -p 15530 3.统计线程中函数的调用小号CPU时间: strace -p 16334 -c strace -p 15530 -o out.file #输出到out.file文件 4.只显示recv函数的调用: strace -p 5314 -f -F -e recv 5.gdb调试线程: gdb -p pid 6.查看线程打开的文件描述符: lsof -p pid