Linux下查詢進(jìn)程占用內(nèi)存的方法都有哪些?
今天馬哥教育要跟大家分享的文章是關(guān)于Linux下查詢進(jìn)程占用內(nèi)存的方法都有哪些?假設(shè)現(xiàn)在有一個「php-cgi」的進(jìn)程 ,進(jìn)程id為「25282」。現(xiàn)在想要查詢該進(jìn)程占用的內(nèi)存大小。Linux命令行下有很多的工具進(jìn)行查看, Linux入門新手和正在Linux學(xué)習(xí)的小伙伴快來看一看吧,希望能夠?qū)Υ蠹矣兴鶐椭?/p>
一、通過進(jìn)程的 status
[root@web3_u ~]# cat /proc/25282/status
Name: php-cgi
State: S (sleeping)
Tgid: 25282
Pid: 25282
PPid: 27187
TracerPid: 0
Uid: 99 99 99 99
Gid: 99 99 99 99
Utrace: 0
FDSize: 256
Groups: 99
VmPeak: 496388 kB
VmSize: 438284 kB
VmLck: 0 kB
VmHWM: 125468 kB
VmRSS: 113612 kB
VmData: 92588 kB
VmStk: 100 kB
VmExe: 6736 kB
VmLib: 18760 kB
VmPTE: 528 kB
VmSwap: 0 kB
Threads: 1
SigQ: 0/46155
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000001000
SigCgt: 0000000184000004
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: ffffffffffffffff
Cpus_allowed: f
Cpus_allowed_list: 0-3
Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001
Mems_allowed_list: 0
voluntary_ctxt_switches: 68245
nonvoluntary_ctxt_switches: 15751
VmRSS: 113612 kB 表示占用的物理內(nèi)存
二、通過 pmap
[root@web3_u ~]# pmap -x 25282
25282: /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf
Address Kbytes RSS Dirty Mode Mapping
0000000000400000 6736 2692 0 r-x-- php-cgi
0000000000c93000 264 196 120 rw--- php-cgi
0000000000cd5000 60 48 48 rw--- [ anon ]
. . .
00007fd6226bc000 4 4 4 rw--- ld-2.12.so
00007fd6226bd000 4 4 4 rw--- [ anon ]
00007fff84b02000 96 96 96 rw--- [ stack ]
00007fff84bff000 4 4 0 r-x-- [ anon ]
ffffffffff600000 4 0 0 r-x-- [ anon ]
---------------- ------ ------ ------
total kB 438284 113612 107960
關(guān)鍵信息點(diǎn)
1、進(jìn)程ID
2、啟動命令「/usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf」
3、RSS :占用的物理內(nèi)存 113612KB
三、通過 smaps
[root@web3_u ~]# cat /proc/25282/smaps | grep '^Rss:'
| awk '{sum +=$2} END{print sum}'
113612
求和得到實際占用物理內(nèi)存為 113612
四、通過 ps 命令
[root@web3_u ~]# ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid'
| awk '$1 ~ /25282/'
25282 php-cgi /usr/local/php/bin/php-cgi 0.0 113612 438284 Oct09 nobody 99
awk 過濾 25282 進(jìn)程號,得到第5列「rsz」的內(nèi)存大小為「113612」
輸出php-cgi進(jìn)程占用的物理內(nèi)存,并從高到低進(jìn)行排序
[root@web3_u ~]# ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid'
| grep php-cgi | sort -k5nr
輸出結(jié)果
23946 php-cgi /usr/local/php/bin/php-cgi 0.0 129540 440000 Oct06 nobody 99
24418 php-cgi /usr/local/php/bin/php-cgi 0.0 129336 437684 Oct06 nobody 99
18973 php-cgi /usr/local/php/bin/php-cgi 0.0 129268 440176 Oct06 nobody 99
17219 php-cgi /usr/local/php/bin/php-cgi 0.0 126588 439840 Oct06 nobody 99
6996 php-cgi /usr/local/php/bin/php-cgi 0.0 124876 438104 Oct09 nobody 99
23850 php-cgi /usr/local/php/bin/php-cgi 0.0 122984 440036 Oct09 nobody 99
28310 php-cgi /usr/local/php/bin/php-cgi 0.0 122920 436456 Oct09 nobody 99
其中rsz為實際內(nèi)存,上例實現(xiàn)按內(nèi)存排序,由大到小
TOP 命令輸出的列
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
25282 nobody 20 0 428m 110m 93m S 0.0 1.9 0:34.42 php-cgi
輸出列信息
1. PID 25282
2. 用戶 nobody
3. 虛擬內(nèi)存 428M
4. 物理內(nèi)存 110M 110*1024= 112640 「和前面計算出來的值基本一致」
5. 共享內(nèi)存 93M
6. 進(jìn)程使用的物理內(nèi)存和總內(nèi)存的百分比 1.9 %
PID:進(jìn)程的ID
USER:進(jìn)程所有者
PR:進(jìn)程的優(yōu)先級別,越小越優(yōu)先被執(zhí)行
NInice:值
VIRT:進(jìn)程占用的虛擬內(nèi)存
RES:進(jìn)程占用的物理內(nèi)存
SHR:進(jìn)程使用的共享內(nèi)存
S:進(jìn)程的狀態(tài)。S表示休眠,R表示正在運(yùn)行,Z表示僵死狀態(tài),N表示該進(jìn)程優(yōu)先值為負(fù)數(shù)
%CPU:進(jìn)程占用CPU的使用率
%MEM:進(jìn)程使用的物理內(nèi)存和總內(nèi)存的百分比
TIME+:該進(jìn)程啟動后占用的總的CPU時間,即占用CPU使用時間的累加值。
COMMAND:進(jìn)程啟動命令名稱
按P
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
16036 root 20 0 8902m 8.6g 480 R 100.0 36.6 0:33.15 redis-server
12934 root 20 0 8902m 8.6g 1072 S 5.5 36.6 285:37.81 redis-server
969 root 20 0 0 0 0 D 4.2 0.0 277:14.85 flush-252:16
1304 root 23 3 1689m 50m 3264 S 4.2 0.2 1445:03 xs-searchd
1294 root 20 0 14928 928 584 S 3.5 0.0 635:05.31 xs-indexd
1287 nobody 20 0 12884 772 576 S 2.8 0.0 833:11.42 dnsmasq
1302 root 23 3 1113m 39m 3244 S 0.7 0.2 1437:57 xs-searchd
4444 www 20 0 280m 43m 884 S 0.7 0.2 27:43.92 nginx
1 root 20 0 19232 1160 868 S 0.0 0.0 0:06.75 init
按 P .表示按cpu排序,默認(rèn)也是按cpu排序
按M
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12934 root 20 0 8902m 8.6g 1072 S 6.0 36.6 285:39.77 redis-server
16036 root 20 0 8902m 8.6g 480 R 100.0 36.6 1:11.42 redis-server
1236 www 20 0 1053m 209m 6556 S 0.0 0.9 4:40.70 php-cgi
1231 www 20 0 1034m 146m 6536 S 0.0 0.6 4:20.82 php-cgi
1184 www 20 0 1043m 119m 6584 S 0.0 0.5 4:21.85 php-cgi
按M 。 表示按占用內(nèi)存排序。 第一列 redis服務(wù)器占用了8.6G的內(nèi)存 。 這個內(nèi)存和redis info
[root@img1_u ~]# redis-cli info memory
# Memory
used_memory_human:8.32G
基本相同。
[root@img1_u ~]# top -u www
top - 22:09:01 up 67 days, 14:16, 1 user, load average: 0.61, 0.90, 0.98
Tasks: 283 total, 2 running, 281 sleeping, 0 stopped, 0 zombie
Cpu(s): 3.9%us, 1.0%sy, 0.5%ni, 89.7%id, 4.6%wa, 0.0%hi, 0.3%si, 0.0%st
Mem: 24542176k total, 21130060k used, 3412116k free, 1750652k buffers
Swap: 524280k total, 0k used, 524280k free, 4039732k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
681 www 20 0 855m 25m 5796 S 0.0 0.1 0:47.00 php-cgi
1181 www 20 0 887m 57m 6484 S 0.0 0.2 4:41.66 php-cgi
1183 www 20 0 864m 34m 6320 S 0.0 0.1 3:52.39 php-cgi
1184 www 20 0 1043m 119m 6584 S 0.0 0.5 4:21.85 php-cgi
1185 www 20 0 869m 39m 6376 S 0.0 0.2 3:57.84 php-cgi
1186 www 20 0 886m 56m 6244 S 0.0 0.2 3:44.75 php-cgi
1187 www 20 0 926m 66m 6480 S 0.0 0.3 4:16.12 php-cgi
1188 www 20 0 890m 60m 6288 S 0.0 0.3 4:13.35 php-cgi
1189 www 20 0 892m 62m 6408 S 0.0 0.3 4:06.60 php-cgi
-u 指定用戶。 php-cgi占用的內(nèi)存在60M左右
五、按進(jìn)程消耗內(nèi)存多少排序的方法
(一)通過 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
輸出結(jié)果
[root@web3_u ~]# ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user' | sort -k5nr
23946 php-cgi /usr/local/php/bin/php-cgi 0.0 129540 440000 Oct06 nobody
24418 php-cgi /usr/local/php/bin/php-cgi 0.0 129336 437684 Oct06 nobody
18973 php-cgi /usr/local/php/bin/php-cgi 0.0 129268 440176 Oct06 nobody
17219 php-cgi /usr/local/php/bin/php-cgi 0.0 126588 439840 Oct06 nobody
6996 php-cgi /usr/local/php/bin/php-cgi 0.0 125056 438104 Oct09 nobody
23850 php-cgi /usr/local/php/bin/php-cgi 0.0 122984 440036 Oct09 nobody
參數(shù)解析:
1. -e 顯示所有進(jìn)程
2. -o 定制顯示信息
3. pid 進(jìn)程ID
4. comm 進(jìn)程名
5. args 啟動命令
6. pcpu 占用CPU 百分比
7. rsz 占用物理內(nèi)存大小
8. vsz 占用虛擬內(nèi)存大小
9. stime 進(jìn)程啟動時間
10. user 啟動用戶
以第一行為例
進(jìn)程ID 23946
進(jìn)程名 php-cgi
啟動命令 /usr/local/php/bin/php-cgi
占用CPU 0
占用物理內(nèi)存 129540
占用虛擬內(nèi)存 440000
啟動時間 Oct06
啟動用戶 nobody
(二)通過 top 命令
top命令默認(rèn)是以CPU排序輸出的,按字母「M」,可以按內(nèi)存占用大小進(jìn)行排序顯示
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
23946 nobody 20 0 429m 126m 107m S 0.0 2.2 1:15.01 php-cgi
24418 nobody 20 0 427m 126m 109m S 0.0 2.2 1:19.56 php-cgi
18973 nobody 20 0 429m 126m 107m S 0.0 2.2 1:20.18 php-cgi
17219 nobody 20 0 429m 123m 104m S 0.0 2.1 1:23.60 php-cgi
6996 nobody 20 0 427m 122m 105m S 0.0 2.1 1:05.27 php-cgi
23850 nobody 20 0 429m 120m 101m S 0.0 2.1 1:02.43 php-cgi
輸出參數(shù)介紹
1. PID:進(jìn)程的ID
2. USER:進(jìn)程所有者
3. VIRT:進(jìn)程占用的虛擬內(nèi)存
4. RES:進(jìn)程占用的物理內(nèi)存
5. SHR:進(jìn)程使用的共享內(nèi)存
6. S:進(jìn)程的狀態(tài)。S表示休眠,R表示正在運(yùn)行,Z表示僵死狀態(tài),N表示該進(jìn)程優(yōu)先值為負(fù)數(shù)
7. %CPU:進(jìn)程占用CPU的使用率
8. %MEM:進(jìn)程使用的物理內(nèi)存和總內(nèi)存的百分比
9. TIME+:該進(jìn)程啟動后占用的總的CPU時間,即占用CPU使用時間的累加值。
通過比較進(jìn)程ID 「23946」,top 命令和 ps 命令輸出的結(jié)果基本保持一致
以上就是馬哥教育今天為大家分享的關(guān)于Linux下查詢進(jìn)程占用內(nèi)存的方法都有哪些?的文章希望本篇文章能夠?qū)φ趶氖翷inux相關(guān)工作的小伙伴們有所幫助。想要了解更多Linux相關(guān)知識的小伙伴記得關(guān)注馬哥教育官網(wǎng)。最后祝愿小伙伴們工作順利哦!
聲明:文章來源于網(wǎng)絡(luò),侵刪!