打工人杂记(一)Linux 如何查看进程内存占用情况?
Linux下查看某一个进程所占用的内存,首先可以通过 ps 命令找到进程 id,比如 ps -ef | grep sender_main_test_strategy_newhot.py 可以看到进程对应的 id 为 30501。
ylhao 30501 1 0 Jun04 ? 00:00:57 python sender_main_test_strategy_newhot.py
使用 top 命令查看进程所占用的内存 top -p 30501:
top - 16:56:10 up 367 days, 20:00, 5 users, load average: 4.75, 5.86, 5.19Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombieCpu(s): 9.0% us, 3.3% sy, 0.3% ni, 87.1% id, 0.2% wa, 0.0% hi, 0.1% siMem: 132051164k total, 130817800k used, 1233364k free, 255684k buffersSwap: 0k total, 0k used, 0k free, 68062536k cachedPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND30501 ylhao 20 0 171m 60m 1588 S 0.0 0.0 0:57.81 python
RES 的值为进程在运行过程中占用的内存量,这里为 60M。
某个进程占用的内存除了和别的进程共享的内存之外就是自己的独占内存了。所以要计算进程独占内存的大小只要用 RES 的值减去 SHR 值即可,一般我们只看 RES 的值,这里 SHR 的值为 1588 KB。
这里还可以动态实时的看到 CPU 和内存的占用率,这里 CPU 和内存的占用率均为 0%(这个进程基本不占用 CPU 和内存)。
按 q 键可以回到命令行。
也可以直接使用以下命令ps -aux | grep sender_main_test_strategy_newhot.py查看。
ylhao 30501 0.0 0.0 175368 61564 ? S Jun04 0:57 python sender_main_test_strategy_newhot.py
可以看出 CPU 占用率为 0%(第一个 0.0),内存占用率为 0%(第二个 0.0),内存占用量为 61564KB ≈ 60MB。
还可以使用命令cat /proc/30501/status查看进程的status文件,VmRSS对应的值就是物理内存占用量,这里为 61564KB ≈ 60MB。
Name: pythonState: S (sleeping)Tgid: 30501Pid: 30501PPid: 1TracerPid: 0Uid: 506 506 506 506Gid: 509 509 509 509FDSize: 256Groups: 509VmPeak: 180184 kBVmSize: 175368 kBVmLck: 0 kBVmHWM: 69032 kBVmRSS: 61564 kBVmAnon: 59984 kBVmFile: 1580 kBVmData: 69840 kBVmStk: 128 kBVmExe: 4 kBVmLib: 8064 kBVmPTE: 292 kBVmSwap: 0 kBThreads: 1SigQ: 11/1031618SigPnd: 0000000000000000ShdPnd: 0000000000000000SigBlk: 0000000000000000SigIgn: 0000000001001006SigCgt: 0000000180000000CapInh: 0000000000000000CapPrm: 0000000000000000CapEff: 0000000000000000CapBnd: ffffffffffffffffCpus_allowed: ffff,ffffffffCpus_allowed_list: 0-47Mems_allowed: 00000000,00000001Mems_allowed_list: 0voluntary_ctxt_switches: 38947nonvoluntary_ctxt_switches: 1524
最后查看内存占用前 10 名的进程并看看是否需要@相应owner:
ps aux | sort -k4,4nr | head -n 10
版权申明
本文系作者 @河马 原创发布在河马博客站点。未经许可,禁止转载。
暂无评论数据