一、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-hant/n/368506.html