Linux下查询进程占用内存的方法总结,假设现在有一个“php-cgi”进程,进程id为“25282”。现在想查询进程占用的内存大小。linux命令行下查看的工具有很多,这里总结几种常用的方法。通过通过进程进程状态[root@web3_u?]#cat/proc/proc/proc/25282/statusname:php-cgistate:s(睡眠)TGID:25282PID:25282PID:25282PPED:27187TRACERPID:0UID:0UID:0UID:0UID:0UID:9999999999GID:9999999999999999999999999999999999999999999999999999999utrace:256ipe:256ipe:256.2.2.2.2.2.256ipe:256ique:256.:0kBVmHWM:125468kBVmRSS:113612kBVmData:92588kBVmStk:100kBVmExe:6736kBVmLib:18760kBVmPTE:528kBVmSwap:0kBThreads:1SigQ:0/46155SigPnd:0000000000000000ShdPnd:0000000000000000SigBlk:0000000000000000SigIgn:0000000000001000SigCgt:0000000184000004CapInh:0000000000000000CapPrm:0000000000000000CapEff:0000000000000000CapBnd:ffffffffffffffffCpus_allowed:fCpus_allowed_list:0-3Mems_allowed:00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001Mems_allowed_list:0voluntary_ctxt_switches:68245nonvoluntary_ctxt_switches:15751VmRSS:113612kB表示占用的物理内存通过pmap[root@web3_u~]#pmap-x2528225282:/usr/local/php/bin/php-cgi--fpm--fpm-config/usr/local/php/etc/php-fpm.confAddressKbytesRSSDirtyModeMapping0000000000400000673626920r-x--php-cgi0000000000c93000264196120rw---php-cgi0000000000cd5000604848rw---[anon]...00007fd6226bc000444rw---ld-2.12.so00007fd6226bd000444rw---[anon]00007fff84b02000969696rw---[stack]00007fff84bff000440r-x--[anon]ffffffffff600000400r-x--[anon]--------------------------------totalkB438284113612107960关键信息点1,进程ID2,启动命令“/usr/local/php/bin/php-cgi--fpm--fpm-config/usr/local/php/etc/php-fpm.conf”3、RSS:占用物理内存113612KB通过smaps[root@web3_u~]#cat/proc/25282/smaps|grep'^Rss:'\|awk'{sum+=$2}END{printsum}'113612sum通过ps得到实际占用的物理内存为113612命令[root@web3_u~]#ps-e-o'pid,comm,args,pcpu,rsz,vsz,stime,user,uid'\|awk'$1~/25282/'25282php-cgi/usr/local/php/bin/php-cgi0.0113612438284Oct09nobody99awk过滤25282进程号,得到第五列“rsz”的内存大小为“113612”,输出php-cgi进程占用的物理内存,以及从高到低排序[root@web3_u~]#ps-e-o'pid,comm,args,pcpu,rsz,vsz,stime,user,uid'\|grepphp-cgi|sort-k5nr输出结果23946php-cgi/usr/local/php/bin/php-cgi0.0129540440000Oct06nobody9924418php-cgi/usr/local/php/bin/php-cgi0.0129336437684Oct06nobody9918973php-cgi/usr/local/php/bin/php-cgi0.0129268440176Oct06nobody9917219php-cgi/usr/local/php/bin/php-cgi0.01265889ct436984/usr/local/php/bin/php-cgi0.0124876438104Oct09nobody9923850php-cgi/usr/local/php/bin/php-cgi0.0122984440036Oct09nobody9928310php-cgi/usr/local/php/bin/php-cgi0.01229204369455实际内存,6上面的例子实现了按内存排序,从大到小TOP命令输出的列PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND25282nobody200428m110m93mS0.01.90:34.42php-cgi输出列信息PID25282usernobody虚拟内存428M物理内存110M110*1024=112640"与前面计算的值基本一致"sharedmemory93M进程使用的物理内存占总内存的百分比1.9%PID:进程IDUSER:进程所有者PR:进程优先级,越小优先执行NInice:ValueVIRT:进程占用的虚拟内存RES:进程占用的物理内存SHR:进程使用的共享内存S:进程的状态S表示休眠,R表示运行,Z表示死态,N表示进程的优先级值为负%CPU:进程占用的CPU使用率%MEM:进程使用的物理内存占总内存的百分比TIME+:进程启动后占用的CPU总时间,即CPU使用时间的累加值。COMMAND:进程启动命令名称按PPIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND16036root2008902m8.6g480R100.036.60:33.15redis-server12934root2008902m8.6g1072S5.536.6285:37.81redis-server969root200000D4.20.0277:14.85flush-252:161304root2331689m50m3264S4.20.21445:03xs-searchd1294root20014928928584S3.50.0635:05.31xs-indexd1287nobody20012884772576S2.80.0833:11.42dnsmasq1302root2331113m39m3244S0.70.21437:57xs-searchd4444www200280m43m884S0.70.227:43.92nginx1root200192321160868S0.00.00:06.75init按P.表示按cpu排序,默认也是按cpu排序按MPIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND12934root2008902m8.6g1072S6.036.6285:39.77redis-server16036root2008902m8.6g480R100.036.61:11.42redis-server1236www2001053m209m6556S0.00.94:40.70php-cgi1231www2001034m146m6536S0.00.64:20.82php-cgi1184www2001043m119m6584S0.00.54:21.85php-cgi按M。Indicatessortingbyoccupiedmemory.Thefirstcolumnredisserveroccupies8.6Gofmemory.Thismemoryisbasicallythesameasredisinfo[root@img1_u~]#redis-cliinfomemory#Memoryuused_memory_human:8.32G.[root@img1_u~]#top-uwwwtop-22:09:01up67days,14:16,1user,loadaverage:0.61,0.90,0.98Tasks:283total,2running,281sleeping,0stopped,0zombieCpu(s):3.9%us,1.0%sy,0.5%ni,89.7%id,4.6%wa,0.0%hi,0.3%si,0.0%stMem:24542176ktotal,21130060kused,3412116kfree,1750652kbuffersSwap:524280ktotal,0kused,524280kfree,4039732kcachedPIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND681www200855m25m5796S0.00.10:47.00php-cgi1181www200887m57m6484S0.00.24:41.66php-cgi1183www200864m34m6320S0.00.13:52.39php-cgi1184www2001043m119m6584S0.00.54:21.85php-cgi1185www200869m39m6376S0.00.23:57.84php-cgi1186www200886m56m6244S0.00.23:44.75php-cgi1187www200926m66m6480S0.00.34:16.12php-cgi1188www200890m60m6288S0.00.34:13.35php-cgi1189www200892m62m6408S0.00.34:06.60php-cgi-u指定用户。php-cgi占用内存约60M。按照进程消耗的内存大小排序的方法是通过ps命令。第一种方法是ps-e-o'pid,comm,args,pcpu,rsz,vsz,stime,user,uid'|sort-k5nr第二种方法是ps-e-o'pid,comm,args,pcpu,rsz,vsz,stime,user,uid'--sort-rsz输出结果[root@web3_u~]#ps-e-o'pid,comm,args,pcpu,rsz,vsz,stime,user'|sort-k5nr23946php-cgi/usr/local/php/bin/php-cgi0.0129540440000Oct06nobody24418php-cgi/usr/local/php/bin/php-cgi0.0129336437684Oct06nobody18973php-cgi/usr/local/php/bin/php-cgi0.0129268440176Oct06nobody/cgi/cgi/cgilocal/php/bin/php-cgi0.0126588439840Oct06nobody6996php-cgi/usr/local/php/bin/php-cgi0.0125056438104Oct09nobody23850php-cgi/usr/local/php/bin/php-cgi0.0122984440036Oct09nobody参数分析:-e显示全部processes-o自定义显示信息pid进程IDcomm进程名args启动命令pcpu占用CPU百分比rsz占用物理内存大小vsz占用虚拟内存大小stime进程启动时间user启动用户以第一行为例processID23946进程名php-cgi启动命令/usr/local/php/bin/php-cgi占用CPU0占用物理内存129540占用虚拟内存440000启动时间Oct06启动用户nobody使用top命令。top命令的默认输出是按CPU排序的。根据字母“M”,可以按照内存占用大小排序,显示PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND23946nobody200429m126m107mS0.02.21:15.01php-cgi24418nobody200427m126m109mS0.02.21:19.56php-cgi18973nobody200429m126m107mS0.02.21:20.18php-cgi17219nobody200429m123m104mS0.02.11:23.60php-cgi6996nobody200427m122m105mS0.02.11:05.27php-cgi23850nobody200429m120m101mS0.02.11:02.43php-cgi输出参数介绍PID:进程IDUSER:进程所有者VIRT:进程占用的虚拟内存RES:进程占用的物理内存SHR:进程使用的共享内存S:进程的状态S表示休眠,R表示运行,Z表示死态,N表示进程优先级值为负数%CPU:进程占用的CPU使用率%MEM:进程占用的物理内存占总内存的百分比TIME+:进程启动后占用的CPU总时间,即即,CPU使用时间的累计值。通过对比进程ID“23946”,top命令和ps命令的输出结果基本一致。
