Linux上进行开发和运营维护的时候,免不了要查看某一个程序所占用内存的情况。有很多个命令都可以达到我们的需求,这里来罗列下。
/proc/${pid}/status
# 730541是要查看的进程pid
$ cat /proc/730541/status
Name: gedit # 进程的程序名
State: S (sleeping) # 进程的状态信息
Tgid: 730541 # 线程组号
Pid: 730541 # 进程pid
PPid: 7672 # 父进程的pid
TracerPid: 0 # 跟踪进程的pid
Uid: 1000 1000 1000 1000 # uid euid suid fsuid
Gid: 1000 1000 1000 1000 # gid egid sgid fsgid
FDSize: 256 # 打开的历史文件描述符总数
Groups: 1007 # 启动该进程的用户所属的组的id
VmPeak: 60184 kB # 进程地址空间的大小
VmSize: 60180 kB # 进程虚拟地址空间的大小reserved_vm:进程在预留或特殊的内存间的物理页
VmLck: 0 kB # 进程已经锁住的物理内存的大小.锁住的物理内存不能交换到硬盘
VmHWM: 18020 kB # 文件内存映射和匿名内存映射的大小
VmRSS: 1253048 kB # 应用程序正在使用的物理内存的大小,就是用ps命令的参数rss的值 (rss)
VmData: 12240 kB # 程序数据段的大小(所占虚拟内存的大小),存放初始化了的数据
VmStk: 84 kB # 进程在用户态的栈的大小
VmExe: 576 kB # 程序所拥有的可执行虚拟内存的大小,代码段,不包括任务使用的库
VmLib: 21072 kB # 被映像到任务的虚拟内存空间的库的大小
VmPTE: 56 kB # 该进程的所有页表的大小
Threads: 1 # 共享使用该信号描述符的任务的个数
SigQ: 0/8183 # 待处理信号的个数/目前最大可以处理的信号的个数
SigPnd: 0000000000000000 # 屏蔽位,存储了该线程的待处理信号
ShdPnd: 0000000000000000 # 屏蔽位,存储了该线程组的待处理信号
SigBlk: 0000000000000000 # 存放被阻塞的信号
SigIgn: 0000000000001000 # 存放被忽略的信号
SigCgt: 0000000180000000 # 存放被俘获到的信号
CapInh: 0000000000000000 # 能被当前进程执行的程序的继承的能力
CapPrm: 0000000000000000 # 进程能够使用的能力,可以包含CapEff中没有的能力,这些能力是被进程自己临时放弃的
CapEff: 0000000000000000 # 是CapPrm的一个子集,进程放弃没有必要的能力有利于提高安全性
Cpus_allowed: 01 # 可以执行该进程的CPU掩码集
Mems_allowed: 1 #
voluntary_ctxt_switches: 1241 # 进程主动切换的次数
nonvoluntary_ctxt_switches: 717 # 进程被动切换的次数
ps -aux | head -1; ps -aux | grep 730541
# RSS就是所用物理内存大小
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
runtime 730541 15.4 7.7 10705100 1254120 Sl Mar25 177:46 java -classpath /opt/orchsym/runtime/conf:/opt/orchsym/runtime/./
top -p ${pid}
$ top -p 730541
top - 11:42:24 up 11 days, 1:29, 3 users, load average: 0.16, 0.15, 0.17
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.2 us, 0.6 sy, 0.0 ni, 98.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 16265572 total, 303660 free, 10792228 used, 5169684 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 5001256 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
730541 runtime 20 0 10.2g 1.2g 75196 S 15.3 7.7 178:10.61 java
# PID:进程的ID
# USER:进程所有者
# PR:进程的优先级别,越小越优先被执行
# NInice:值
# VIRT:进程占用的虚拟内存
# RES:进程占用的物理内存
# SHR:进程使用的共享内存
# S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
# %CPU:进程占用CPU的使用率
# %MEM:进程使用的物理内存和总内存的百分比
# TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。178:10.61表示为:178分钟,10秒,十分之6秒,百分之1秒。从右到左分别是百分之一秒,十分之一秒,秒,十秒,分钟。
# COMMAND:进程启动命令名称