溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux下如何查詢進程占用的內(nèi)存

發(fā)布時間:2021-10-26 09:48:33 來源:億速云 閱讀:196 作者:小新 欄目:建站服務(wù)器

小編給大家分享一下Linux下如何查詢進程占用的內(nèi)存,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

linux 下查詢進程占用的內(nèi)存方法總結(jié),假設(shè)現(xiàn)在有一個「php-cgi」的進程 ,進程id為「25282」?,F(xiàn)在想要查詢該進程占用的內(nèi)存大小。 linux命令 行下有很多的工具進行查看,現(xiàn)總結(jié)常見的幾種方式

Linux下如何查詢進程占用的內(nèi)存

通過進程的 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)鍵信息點

1、進程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 進程號,得到第5列「rsz」的內(nèi)存大小為「113612」

輸出php-cgi進程占用的物理內(nèi)存,并從高到低進行排序

[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. 進程使用的物理內(nèi)存和總內(nèi)存的百分比 1.9 %

PID:進程的ID
USER:進程所有者
PR:進程的優(yōu)先級別,越小越優(yōu)先被執(zhí)行
NInice:值
VIRT:進程占用的虛擬內(nèi)存
RES:進程占用的物理內(nèi)存
SHR:進程使用的共享內(nèi)存
S:進程的狀態(tài)。S表示休眠,R表示正在運行,Z表示僵死狀態(tài),N表示該進程優(yōu)先值為負數(shù)
%CPU:進程占用CPU的使用率
%MEM:進程使用的物理內(nèi)存和總內(nèi)存的百分比
TIME+:該進程啟動后占用的總的CPU時間,即占用CPU使用時間的累加值。
COMMAND:進程啟動命令名稱

按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排序,默認也是按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左右

按進程消耗內(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 顯示所有進程

  2. -o 定制顯示信息

  3. pid 進程ID

  4. comm 進程名

  5. args 啟動命令

  6. pcpu 占用CPU 百分比

  7. rsz 占用物理內(nèi)存大小

  8. vsz 占用虛擬內(nèi)存大小

  9. stime 進程啟動時間

  10. user 啟動用戶

以第一行為例

進程ID 23946
進程名 php-cgi
啟動命令 /usr/local/php/bin/php-cgi
占用CPU 0
占用物理內(nèi)存 129540
占用虛擬內(nèi)存 440000
啟動時間 Oct06
啟動用戶 nobody

通過 top 命令

top命令默認是以CPU排序輸出的,按字母「M」,可以按內(nèi)存占用大小進行排序顯示

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:進程的ID

  2. USER:進程所有者

  3. VIRT:進程占用的虛擬內(nèi)存

  4. RES:進程占用的物理內(nèi)存

  5. SHR:進程使用的共享內(nèi)存

  6. S:進程的狀態(tài)。S表示休眠,R表示正在運行,Z表示僵死狀態(tài),N表示該進程優(yōu)先值為負數(shù)

  7. %CPU:進程占用CPU的使用率

  8. %MEM:進程使用的物理內(nèi)存和總內(nèi)存的百分比

  9. TIME+:該進程啟動后占用的總的CPU時間,即占用CPU使用時間的累加值。

通過比較進程ID 「23946」,top 命令和 ps 命令輸出的結(jié)果基本保持一致

以上是“Linux下如何查詢進程占用的內(nèi)存”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI