Linux查看進程內(nèi)存占用的六種方法
我這里整理了 6 種方式,應該足夠用了吧,不夠你可以再補充。
- top 命令
- ps 命令
- smaps
- pmap 命令
- smem 命令
- status
top
首先想到的肯定是 top 命令,直接輸入 top 回車即可
輸出參數(shù)介紹:
- PID:進程的ID
- USER:進程所有者
- 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使用時間的累加值
top命令默認是以CPU排序輸出的,按字母「****M****」,可以按內(nèi)存占用大小進行排序顯示
顯示的有整體內(nèi)存占用情況和各個進程占用的內(nèi)存情況。
ps
默認的 ps 不輸出內(nèi)存相關的內(nèi)容,可以添加要顯示的字段
ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid'
- -e 顯示所有進程
- -o 定制顯示信息
- pid 進程ID
- comm 進程名
- args 啟動命令
- pcpu 占用CPU 百分比
- rsz 占用物理內(nèi)存大小
- vsz 占用虛擬內(nèi)存大小
- stime 進程啟動時間
- user 啟動用戶
RSZ: 954184 表示內(nèi)存占用
更多操作指令,按內(nèi)存排序
ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | sort -k5nr
也可以使用 --sort -rsz
按 rsz 排序,效果一樣
smaps
smaps 也是進程的一個屬性,可以通過 cat smaps 獲得
cat /proc/7576/smaps | grep Rss | awk '{sum +=$2} END{print sum}'
需要將他們進行加起來
pmap
使用 pmap 也可以查看進程的詳細內(nèi)存占用情況
pmap -h Usage: pmap [options] PID [PID ...] Options: -x, --extended show details -X show even more details WARNING: format changes according to /proc/PID/smaps -XX show everything the kernel provides -c, --read-rc read the default rc -C, --read-rc-from=<file> read the rc from file -n, --create-rc create new default rc -N, --create-rc-to=<file> create new rc to file NOTE: pid arguments are not allowed with -n, -N -d, --device show the device format -q, --quiet do not display header and footer -p, --show-path show path in the mapping -A, --range=<low>[,<high>] limit results to the given range -h, --help display this help and exit -V, --version output version information and exit For more details see pmap(1).
執(zhí)行 pmap -x pid
可以查看詳情
pmap -x 7576 7576: /usr/share/logstash/jdk/bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djdk.io.File.enableADS=true -Djruby.compile.invokedynamic=true -Djruby.jit.threshold=0 -Djruby.regexp.interruptible=true -XX:+HeapDumpOnOutOfMemoryError -Djava.security.egd=file:/dev/urandom -Dlog4j2.isThreadContextMapInheritable=true -cp /usr/share/logstash/logstash-core/lib/jars/animal-sniffer-annotations-1.14.jar:/ Address Kbytes RSS Dirty Mode Mapping ............... ---------------- ------- ------- ------- total kB 3725156 626940 619032
RSS: 626940 即內(nèi)存占用。
smem
一般系統(tǒng)沒有自帶,需要安裝一下,根據(jù)你的系統(tǒng)選擇合適的安裝工具
apt-get update apt-get install -y smem smem --help
自帶排序,直接輸出排好序的數(shù)據(jù),可以使用 -r 參數(shù)從大到小排列
smem smem -r
status
Linux 中每個進程在 /proc 目錄下都有對應的目錄,其中某個進程目錄下有一個 status 文件,通過 status 文件內(nèi)容可以查看到當前占用資源的情況
cat /proc/7576/status Name: java Umask: 0022 State: S (sleeping) Tgid: 7576 Ngid: 0 Pid: 7576 PPid: 1 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 256 Groups: 0 VmPeak: 3724360 kB VmSize: 3724360 kB VmLck: 0 kB VmPin: 0 kB VmHWM: 638308 kB VmRSS: 621528 kB RssAnon: 613808 kB RssFile: 7720 kB RssShmem: 0 kB VmData: 3524964 kB VmStk: 136 kB VmExe: 4 kB VmLib: 22520 kB VmPTE: 1604 kB VmSwap: 0 kB Threads: 34 SigQ: 0/14503 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: 0000000000000000 SigCgt: 2000000181005ccf CapInh: 0000000000000000 CapPrm: 00000000a80425fb CapEff: 00000000a80425fb CapBnd: 00000000a80425fb CapAmb: 0000000000000000 Seccomp: 2 Speculation_Store_Bypass: vulnerable Cpus_allowed: 3 Cpus_allowed_list: 0-1 Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001 Mems_allowed_list: 0 voluntary_ctxt_switches: 22 nonvoluntary_ctxt_switches: 29
VmRSS: 621528 kB 就表示占用的內(nèi)存大小。
END
到此這篇關于Linux查看進程內(nèi)存占用的六種方法的文章就介紹到這了,更多相關Linux查看進程內(nèi)存占用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Linux下使用nmcli命令連接網(wǎng)絡的流程步驟
在使用ubuntu系統(tǒng)的時候,有時候不方便使用桌面,使用ssh遠程連接,可能需要使用nmcli命令來連接網(wǎng)絡,本文將介紹如何使用nmcli命令連接網(wǎng)絡,需要的朋友可以參考下2025-06-06一個shell for循環(huán)與case結合的腳本(監(jiān)控程序狀態(tài))
分享一個for循環(huán)+case的腳本(監(jiān)控程序狀態(tài)并執(zhí)行相關操作) ,供大家學習參考2013-11-11淺談安裝ORACLE時在Linux上設置內(nèi)核參數(shù)的含義
下面小編就為大家?guī)硪黄獪\談安裝ORACLE時在Linux上設置內(nèi)核參數(shù)的含義。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03