title: linux上查看某个进程内存占用情况 #标题tags: #标签
date: 2022-03-26
categories: linux大杂烩 # 分类
Linux 上进行开发和运营维护的时候,免不了要查看某一个程序所占用内存的情况。有很多个命令都可以达到我们的需求,这里来罗列下。
/proc/${pid}/status
# 730541是要查看的进程pid$ cat /proc/730541/statusName: gedit # 进程的程序名State: S (sleeping) # 进程的状态信息Tgid: 730541 # 线程组号Pid: 730541 # 进程pidPPid: 7672 # 父进程的pidTracerPid: 0 # 跟踪进程的pidUid: 1000 1000 1000 1000 # uid euid suid fsuidGid: 1000 1000 1000 1000 # gid egid sgid fsgidFDSize: 256 # 打开的历史文件描述符总数Groups: 1007 # 启动该进程的用户所属的组的idVmPeak: 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
ps -aux | head -1; ps -aux | grep 730541# RSS就是所用物理内存大小USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDruntime 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 730541top - 11:42:24 up 11 days, 1:29, 3 users, load average: 0.16, 0.15, 0.17Tasks: 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 stKiB Mem : 16265572 total, 303660 free, 10792228 used, 5169684 buff/cacheKiB Swap: 0 total, 0 free, 0 used. 5001256 avail MemPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND730541 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:进程启动命令名称
