Linux查看内存被谁占用

一、top命令

top是linux系统的一个基本命令,可以用来实时查看系统的进程状态和资源占用情况,包括CPU、内存、IO等。在top命令中,如果按下m键,则可以按内存占用率对进程进行排序。以下是查看当前内存使用情况的top命令示例:

$ top - 22:51:45 up  1:08,  1 user,  load average: 0.12, 0.19, 0.19
Tasks: 175 total,   1 running, 174 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.8 us,  0.9 sy,  0.0 ni, 96.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0
KiB Mem : 32921128 total, 17461632 free, 10835900 used,  4673596 buff/cache
KiB Swap:  524284 total,   524284 free,        0 used. 21302332 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                                                    
  5579 www-data  20   0  456124 401176   2724 S  0.0  1.2   0:38.92 apache2                                                                                                                    
  3317 root      20   0 1390520 183132   6372 S 16.2  0.6   9:17.72 dockerd                                                                                                                    
  2628 mysql     20   0 2850640 143500  16324 S  0.3  0.4   1:09.08 mysqld                                                                                                                     
  1231 root      20   0  228572  32888  14180 S  6.9  0.1   1:23.22 containerd                                                                                                                
  5454 root      20   0  608160  27248  18920 S  0.0  0.1   0:58.04 containerd-shim                                                                                                           
  2745 root      20   0  488412  23672  18392 S  0.0  0.1   0:07.50 containerd-shim                                                                                                           
  4848 root      20   0  602928  19052  12708 S  0.0  0.1   0:00.28 sshd                                                                                                                      
  4822 root      20   0  602944  19016  12684 S  0.0  0.1   0:00.28 sshd

可以看到,在top命令的输出中,有一个KiB Mem的行,显示了当前系统的总内存和可用内存,还有一个%MEM的列,显示了每个进程的内存占用率。

需要注意的是,top命令也可以查看CPU占用率,而且默认情况下是按CPU占用率排序,如果要按内存排序,则需要按下m键。同时,如果需要查看更详细的内存使用情况,则可以使用其他命令。

二、free命令

free命令可以查看系统内存和交换空间的使用情况。以下是查看当前内存使用情况的free命令示例:

$ free -h
              total        used        free      shared  buff/cache   available
Mem:            31G         10G         19G        2.8M        1.4G         21G
Swap:          512M          0B        512M

可以看到,在free命令的输出中,有一个Mem行,显示了当前系统的总内存和可用内存。

如果需要查看更详细的内存使用情况,则可以添加参数“-m”来显示内存使用情况的详细信息:

$ free -m
              total        used        free      shared  buff/cache   available
Mem:          32121       10472       19800           2        1432       21315
Swap:           511           0         511

可以看到,在添加“-m”参数后,输出中的内存使用情况信息都以MB为单位显示。

三、vmstat命令

vmstat命令可以查看系统的虚拟内存使用情况,包括页表、虚拟内存、磁盘IO等。以下是查看当前内存使用情况的vmstat命令示例:

$ vmstat -s
       32921128 K total memory
       10839992 K used memory
        5588880 K active memory
        1461684 K inactive memory
       17461632 K free memory
         467696 K buffer memory
         276580 K swap cache
        524284 K total swap
             0 K used swap
        524284 K free swap
      91498878 non-nice user cpu ticks
        184296 nice user cpu ticks
        910626 system cpu ticks
    190944925 idle cpu ticks
       3378952 IO-wait cpu ticks
            64 IRQ cpu ticks
           1878 softirq cpu ticks
              0 stolen cpu ticks
      37278728 pages paged in
    1397199226 pages paged out
            26 pages swapped in
             0 pages swapped out
    1538391014 interrupts
    1124942483 CPU context switches
       3310415 boot time
         984586 forks

可以看到,vmstat命令的输出非常详细,可以查看很多系统资源的使用情况,包括内存、CPU、IO等。其中,关于内存的信息包括了总内存、已用内存、活跃内存、未活跃内存、可用内存、缓存内存、交换缓存等。

四、ps命令

ps命令可以查看当前系统的进程状态和资源占用情况,包括CPU、内存、IO等。以下是查看当前进程内存使用情况的ps命令示例:

$ ps aux | awk '{print $6/1024 " MB\t\t" $11}' | sort -n
0 MB            (sd-pam)
0 MB            /lib/systemd/systemd-journald
0 MB            /lib/systemd/systemd-udevd
0 MB            /usr/lib/x86_64-linux-gnu/gconf/gconfd-2
0 MB            /usr/sbin/cron -f
0 MB            [kdevtmpfs]
0 MB            [kdmflush]
0 MB            [khugepaged]
0 MB            [khungtaskd]
0 MB            [ksmd]
0 MB            [ksoftirqd/0]
0 MB            [kswapd0]
0 MB            [kthreadd]
0 MB            [kworker/0:0]
0 MB            [kworker/0:0H]
0 MB            [kworker/0:1]
0 MB            [kworker/0:1H]
0 MB            [kworker/u256:0]
...

可以看到,ps命令的输出中,首先使用awk命令计算了每个进程占用的内存大小,并按照从小到大的顺序进行排序。这种方式可以很方便地查看每个进程的内存使用情况,并找出最耗内存的进程。

五、smem命令

与ps命令类似,smem命令也可以查看当前系统的进程状态和资源占用情况,包括CPU、内存、IO等。但是,通过smem命令可以更方便地查看进程占用的内存情况,并且可以根据内存使用情况进行排序。以下是查看当前进程内存使用情况的smem命令示例:

$ smem -t -k -n -c "pid command rss"
   PID COMMAND                         RSS
  3317 /usr/bin/dockerd                183132 kB
   633 /lib/systemd/systemd-journald   130080 kB
  1231 /usr/bin/containerd             107884 kB
  4309 /usr/sbin/apache2 -DFOREGROUND   99724 kB
  5579 /usr/sbin/apache2 -DFOREGROUND   95140 kB
  3892 /usr/sbin/apache2 -DFOREGROUND   87584 kB
  5014 /usr/sbin/apache2 -DFOREGROUND   84860 kB
  4753 /usr/sbin/apache2 -DFOREGROUND   83660 kB
  4912 /usr/sbin/apache2 -DFOREGROUND   83532 kB
  2533 /usr/sbin/apache2 -DFOREGROUND   83496 kB
  4822 sshd: root@pts/0                 19016 kB
  5454 containerd-shim -namespace moby   17492 kB
  2745 containerd-shim -namespace moby   17492 kB
...

可以看到,smem命令的输出中,按照RSS(常驻集大小)排序,列出了当前所有进程的占用内存情况,同时也显示了进程的PID和命令名称。

总结

通过本文的介绍,我们可以看到,Linux系统提供了很多命令来查看内存使用情况,包括top、free、vmstat、ps、smem等。每个命令都有其独特的优点和适用场景,可以根据实际需要进行选择和使用。

原创文章,作者:OAWRE,如若转载,请注明出处:https://www.506064.com/n/368506.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
OAWREOAWRE
上一篇 2025-04-12 01:13
下一篇 2025-04-12 01:13

相关推荐

  • Python创建分配内存的方法

    在python中,我们常常需要创建并分配内存来存储数据。不同的类型和数据结构可能需要不同的方法来分配内存。本文将从多个方面介绍Python创建分配内存的方法,包括列表、元组、字典、…

    编程 2025-04-29
  • Python变量在内存中的存储

    该文章将从多个方面对Python变量在内存中的存储进行详细阐述,包括变量的声明和赋值、变量的引用和指向、内存地址的变化、内存管理机制等。 一、声明和赋值 在Python中,变量声明…

    编程 2025-04-29
  • Python计算内存占用

    Python是一种高级的、解释性的、面向对象的、动态的程序语言,因其易于学习、易于阅读、可移植性好等优点,越来越受到开发者的青睐。当我们编写Python代码时,可能经常需要计算程序…

    编程 2025-04-28
  • 使用Go-Redis获取Redis集群内存使用率

    本文旨在介绍如何使用Go-Redis获取Redis集群的内存使用率。 一、Go-Redis简介 Go-Redis是一个用于连接Redis服务器的Golang客户端。它支持Redis…

    编程 2025-04-28
  • 如何在Linux中添加用户并修改配置文件

    本文将从多个方面详细介绍在Linux系统下如何添加新用户并修改配置文件 一、添加新用户 在Linux系统下创建新用户非常简单,只需使用adduser命令即可。使用以下命令添加新用户…

    编程 2025-04-27
  • Python内置函数——查看对象内存

    本文将介绍Python内置函数中,在开发中查看对象内存的相关函数。 一、id()函数 id()函数是Python内置函数,用于返回对象的唯一标识符,也就是对象在内存中的地址。 nu…

    编程 2025-04-27
  • 如何解决linux jar包 invalid or corrupt jarfile问题

    对于许多开发人员和系统管理员在Linux环境下使用Java开发过程中遇到的一个常见的问题是 invalid or corrupt jarfile(无效或损坏的jar文件)错误。当您…

    编程 2025-04-27
  • 在Linux上安装JRE并配置环境变量

    本文将从以下几个方面为您详细阐述如何在Linux系统上,通过自己账户安装JRE,并且配置环境变量。 一、安装JRE 在进行安装前,我们需要下载JRE的安装包并解压,可以从官方网站下…

    编程 2025-04-27
  • Python进程池共享内存用法介绍

    本文将从多个方面详细阐述Python进程池共享内存的相关知识,包括如何使用进程池、进程池的实现原理、进程池中的共享内存管理等。本文内容将涵盖: 一、进程池的使用 进程池是一种有效的…

    编程 2025-04-27
  • GTKAM:Linux下的照片管理器

    GTKAM是用于Linux操作系统的一款照片管理器,它支持多种相机及存储设备,并提供了一系列强大的工具,让用户可以方便地浏览、管理、编辑和导出照片。本文将从多个方面对GTKAM进行…

    编程 2025-04-27

发表回复

登录后才能评论