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/zh-hk/n/368506.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
OAWRE的頭像OAWRE
上一篇 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

發表回復

登錄後才能評論