Linux查看高内存进程方法大全 (linux查看内存高进程)

随着计算机技术的发展,内存容量越来越大,但是在运行过程中,仍然会出现内存不足的情况。其中,高内存进程占用内存较高,是造成内存不足的主要原因之一。因此,了解如何查看高内存进程非常重要。本篇文章将介绍多个查看高内存进程的方法,供大家参考。

一、使用top命令

top是一个Linux系统资源监视器,可以在终端中查看系统的实时运行情况。其中,可以通过top命令查看系统中最耗费内存的进程。具体操作如下:

1. 打开终端,输入以下命令:

top

2. 在终端中显示类似下面的信息:

“`

top – 10:16:25 up 43 min, 1 user, load average: 0.41, 0.46, 0.47

Tasks: 183 total, 2 running, 181 sleeping, 0 stopped, 0 zombie

%Cpu(s): 1.7 us, 0.7 sy, 0.0 ni, 97.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

MiB Mem : 16044.2 total, 11352.1 free, 1989.9 used, 1702.1 buff/cache

MiB Swap: 16384.0 total, 16284.0 free, 100.0 used. 13736.8 avl Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

75855 root 20 0 1979864 1.1g 39772 S 0.0 7.3 0:20.77 java

67774 root 20 0 1051520 717392 22872 S 0.0 4.4 0:32.19 docker

75475 tomcat 20 0 19.046g 829700 30380 S 0.0 5.1 0:02.17 java

“`

3. 在Processes中,按下shift+m键,会按照内存使用量从高到低排序,可以查看使用内存最多的进程。其中,RES表示进程占用物理内存大小(不包括共享内存和虚拟内存)。

二、使用ps命令

ps命令是一个Linux系统中用于查看进程信息的命令。可以通过ps命令查看系统中进程的详细信息,包括进程ID和占用内存大小等。具体操作如下:

1. 打开终端,输入以下命令(其中,-e选项表示显示所有进程):

ps -e -o pid,user,%mem,command –sort=-%mem | head

2. 在终端中显示类似下面的信息:

“`

PID USER %MEM COMMAND

81816 root 9.9 /usr/bin/python3 /usr/bin/gunicorn –config /etc/gunicorn.d/ga –env DJANGO_SETTINGS_MODULE=ga_core.settings ga_core.wsgi:application

17846 mongodb 5.5 /usr/bin/mongod –config /etc/mongodb.conf

18592 redis 3.3 /usr/bin/redis-server *:6379

76947 root 3.3 /usr/bin/java -Xms256m -Xmx3072m -XX:MaxPermSize=128m -Djava.awt.headless=true -cp /usr/share/t-launcher-packaging/bin/t-launch.jar xt.boot.Boot run

81096 root 2.9 /usr/bin/dockerd -H fd:// –contnerd=/run/contnerd/contnerd.sock

17847 mongodb 2.4 /usr/bin/mongod –config /etc/mongodb.conf

35387 root 1.6 /usr/bin/dockerd -H fd:// –contnerd=/run/contnerd/contnerd.sock

16091 root 1.3 /usr/in/mysqld –basedir=/usr –datadir=/var/lib/mysql –plugin-dir=/usr/lib/mysql/plugin –user=mysql –log-error=/var/log/mysqld.log –pid-file=/run/mysqld/mysqld.pid –socket=/var/lib/mysql/mysql.sock –port=3306

23488 www-data 1.3 php-fpm: pool www

“`

3. 在命令中添加–sort=-%mem选项,可以将结果按照内存使用量从高到低排序。其中,%MEM表示进程占用物理内存大小占总内存大小的百分比。

三、使用em命令

em是一个Linux系统中用于查看进程和内存使用情况的命令,可以根据进程和用户等多种方式进行分类和过滤。具体操作如下:

1. 打开终端,输入以下命令(其中,-r选项表示以内存使用量为基准进行排序):

em -r

2. 在终端中显示类似下面的信息:

“`

PID User Command Swap USS PSS RSS

12355 root /usr/bin/mongod –quiet –cfi 0 403.03M 410.61M 523.85M

29859 mysql /usr/in/mysqld –daemonize- 0 237.89M 244.01M 297.78M

14872 root /usr/bin/dockerd –host=fd:// 0 710.93M 781.37M 922.35M

23271 root /in/iptables -w2 -t nat -A 0 6.77M 8.69M 28.09M

25732 root /usr/bin/dockerd –host=unix: 0 34.08M 36.16M 55.73M

12378 mongodb /usr/bin/mongod –quiet –cfi 0 134.24M 189.43M 243.47M

29777 mysql /usr/in/mysqld –daemonize- 0 2.66M 3.08M 31.49M

15257 root /usr/bin/dockerd -H fd:// –v 0 11.86M 13.37M 26.02M

15261 root /usr/lib/snapd/snapd –no-fork 0 13.01M 13.55M 23.11M

26128 syslog /usr/in/rsyslogd -n 0 5.56M 11.02M 22.22M

26403 root /usr/bin/dockerd –host=fd:// 0 7.42M 8.91M 18.81M

29523 root /usr/bin/dockerd –host=unix: 0 6.56M 8.81M 18.37M

11607 root /usr/bin/dockerd -H fd:// –v 0 9.17M 10.04M 16.31M

28414 root /usr/bin/docker-proxy –proto 0 4.08M 4.66M 10.62M

29626 root /usr/bin/dockerd –host=unix: 0 4.05M 4.56M 10.04M

32234 root /usr/in/nginx -g daemon off 0 3.80M 4.84M 9.85M

29700 root /usr/bin/dockerd -H fd:// –v 0 7.51M 8.32M 9.66M

16980 root /usr/lib/snapd/snapd –n 0 6.80M 7.63M 9.62M

29795 root /usr/bin/dockerd –host=unix: 0 5.16M 5.80M 9.20M

“`

3. 在命令中添加–sort=USS选项,可以将结果根据进程实际使用的内存大小从高到低排序。其中,USS表示进程占用物理内存大小(不包括共享内存和虚拟内存)。

四、使用pidstat命令

pidstat是Linux系统中一个用于查看指定进程的CPU、内存和IO等性能数据的命令。具体操作如下:

1. 打开终端,输入以下命令(其中,-r选项表示查看内存使用情况):

pidstat -r [PID]

2. 在终端中显示类似下面的信息:

“`

Linux 4.4.0-62-generic () 05/18/2023 _x86_64_ (2 CPU)

05:14:55 PM pid uid tgid total_vm rss softirq majflt minflt pswpin pswpout swapused uname %usr %system %guest %CPU CPU %mem minflt/s majflt/s VSZ RSS LTP

05:14:55 PM 67 1000 67 34070 164 3171 0 50 0 0 0 root 0.15 0.07 0.00 0.22 1 0.00 0.02 0.00 3.74M 172.0K chronyd

05:14:55 PM 88 0 88 12659 166 579 0 8 0 0 0 syslog 0.03 0.02 0.00 0.05 0 0.00 0.00 0.00 1.47M 168.0K rsyslogd

05:14:55 PM 97 0 97 75533 1016 13882 0 163 0 0 0 root 0.49 0.25 0.00 0.74 1 0.05 0.49 0.01 411.82M 1.02M systemd-journal

05:14:55 PM 150 0 150 25291 102 2 0 27 0 0 0 root 0.00 0.01 0.00 0.01 1 0.00 0.00 0.00 8.80M 100.0K systemd-udevd

05:14:55 PM 2977 0 2977 56659 1280 41 6 7 0 0 0 www-data 0.04 0.01 0.00 0.05 1 0.05 0.00 0.00 218.35M 1.24M nginx

“`

3. 修改命令中的[PID]为具体进程ID,即可查看指定进程的内存使用情况。

五、使用pmap命令

pmap命令可以显示进程的内存映射信息,包括虚拟地址、权限、映射文件等。从而可以分析进程的内存使用情况。具体操作如下:

1. 打开终端,输入以下命令(其中,[PID]表示进程ID):

pmap -d [PID]

2. 在终端中显示类似下面的信息:

“`

Address Kbytes RSS Dirty Mode Mapping

00007f69a5585000 920 520 0 r-xp /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18.0.0

00007f69a5ec7000 2023 664 208 rw-p /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18.0.0

00007f69a6c9f000 24 24 24 rw-p [heap]

00007f69a6ca7000 196 108 108 rw-p [heap]

00007f69a8e0e000 132 80 80 rw-p /usr/lib/x86_64-linux-gnu/libnettle.so.6.4

00007f69a901d000 96 44 44 rw-p /usr/lib/x86_64-linux-gnu/libhogweed.so.4.3

00007f69a91a0000 32 20 20 rw-p /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.2

“`

3. 在命令中查找RSS(即常驻内存大小)更大的模块,即可得知占用内存较多的代码位置。

六、使用psutil库

psutil是一个跨平台的Python第三方库,可以提供系统信息和进程运行情况等详细信息。可以通过psutil库查看内存使用量较高的进程。具体操作如下:

1. 安装psutil库(可以通过pip命令进行安装):

pip install psutil

2. 在Python脚本中,输入以下代码:

“`

import psutil

for process in psutil.process_iter(attrs=[‘pid’, ‘name’, ‘memory_info’]):

rss = process.info[‘memory_info’].rss / 1024 / 1024 # 获取进程常驻内存大小(MB)

if rss > 100: # 显示常驻内存大小大于100MB的进程

print(‘PID: {}, Name: {}, Mem: {:.2f} MB’.format(process.info[‘pid’], process.info[‘name’], rss))

“`

3. 运行Python脚本,即可查看常驻内存超过100MB的进程信息。

综上所述,Linux查看高内存进程有多种方法,每种方法都有其特点和优缺点。可以根据具体情况选择合适的方法。同时,为了避免出现内存不足的情况,建议优化程序,减少不必要的内存占用。

相关问题拓展阅读:

linux 查看内存被哪些进程

查看占用内存更高的进程

ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head

或者top (然后按下P,注意这里是大写)

该命令组合实际上是下面两句命令:

ps aux|head -1

ps aux|grep -v PID|sort -rn -k +3|head

其中之一句主要是为了获取标题(USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND)。

接下来的grep -v PID是将ps aux命令得到的标题去掉,即grep不包含PID这三个字母组合的行,再将其中结果使用sort排序。

sort -rn -k +3该命令中的-rn的r表示是结果倒序排列,n为以数值大小排序,而-k +3则是针对第3列的内容进行排序,再使用head命令获取默认前10行数据。(其中的|表示管道操作)

补充:内容解释

PID:进程的ID

USER:进程所戚态有者

PR:进程的优先级别,薯陪越小越优先被执行

NInice:值

VIRT:进程占用的虚拟内存

RES:进程占用的物理内存

SHR:高手源进程使用的共享内存

S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数

%CPU:进程占用CPU的使用率

%MEM:进程使用的物理内存和总内存的百分比

COMMAND:进程启动命令名称

Linux下如何查看哪些进程占用的CPU内存资源最多

linux下获取占用CPU资世肆源最多的10个进程,可以使用如下命令组合:

ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head

linux下获取占用内存资源最多的10个进族裤程,可以使用如下命令组合:

ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head

命令组合解析(针对CPU的兆返简,MEN也同样道理):

ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head

该命令组合实际上是下面两句命令:

ps aux|head -1

ps aux|grep -v PID|sort -rn -k +3|head

linux查看内存高进程的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux查看内存高进程,Linux查看高内存进程方法大全,linux 查看内存被哪些进程,Linux下如何查看哪些进程占用的CPU内存资源最多的信息别忘了在本站进行查找喔。


数据运维技术 » Linux查看高内存进程方法大全 (linux查看内存高进程)