Linux 系统内存管理命令详解312
在 Linux 系统中,内存是系统中最重要的资源之一,它直接影响着系统的性能和稳定性。因此,对系统内存进行有效的管理和监控至关重要。本文将介绍 Linux 系统中常用的查看系统内存命令,这些命令可以帮助管理员了解内存的使用情况,并及时发现和解决内存问题。
free 命令
free 命令是 Linux 系统中最常用的查看内存信息的命令。它可以显示系统中总内存、已用内存、空闲内存、共享内存、缓存内存等信息。free 命令的输出结果如下:
```
total used free shared buff/cache available
Mem: 8192 5372 1796 720 1024 2284
Swap: 4096 2048 2048
```
其中,各列含义如下:* total: 系统总内存大小
* used: 已用内存大小
* free: 空闲内存大小
* shared: 共享内存大小
* buff/cache: 缓存内存大小
* available: 可用内存大小
available 表示系统中可以立即分配给新进程的内存大小。如果 available 内存较小,则系统可能会出现性能问题。
vmstat 命令
vmstat 命令可以显示系统的虚拟内存统计信息,包括内存使用情况、进程信息、CPU 利用率等。vmstat 命令的输出结果如下:
```
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 1768 1024 2284 0 0 0 0 43 42 0 0 100 0 0
```
其中,各列含义如下:* procs: 进程信息,包括运行队列中进程数量、阻塞进程数量、可交换进程数量
* memory: 内存信息,包括空闲内存大小、缓冲内存大小、缓存内存大小
* swap: 交换分区信息,包括已用交换分区大小、空闲交换分区大小
* io: I/O 统计信息,包括每秒块设备读取次数、每秒块设备写入次数
* system: 系统统计信息,包括每秒中断次数、每秒上下文切换次数
* cpu: CPU 利用率信息,包括用户态 CPU 利用率、系统态 CPU 利用率、空闲 CPU 利用率、等待 I/O 的 CPU 利用率、被窃取的 CPU 利用率
vmstat 命令可以指定输出间隔和次数,例如:vmstat 2 5 表示每 2 秒输出一次,输出 5 次。
top 命令
top 命令可以动态显示系统中正在运行的进程的资源使用情况,包括内存使用情况、CPU 利用率等。top 命令的输出结果如下:
```
top - 17:33:31 up 26 min, 2 users, load average: 0.26, 0.25, 0.22
Tasks: 169 total, 3 running, 166 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.1 us, 1.3 sy, 0.0 ni, 96.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 8192 total, 5364 used, 2828 free, 720 buffers
KiB Swap: 4096 total, 2048 used, 2048 free. 344704KiB cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2236 www-data 20 0 318252 12644 8644 R 11.3 0.2 27:37.66 php-fpm: pool www
2142 root 20 0 228532 4544 3872 S 0.7 0.1 0:18.67 Xorg
2639 root 20 0 129792 2848 1592 S 0.0 0.0 0:01.77 dhclient
2113 root 20 0 132764 2236 1560 S 0.0 0.0 0:00.56 irqbalance
2224 www-data 20 0 312636 11800 8284 R 0.0 0.1 0:11.99 php-fpm: pool www
```
其中,各列含义如下:* PID: 进程 ID
* USER: 进程所有者
* PR: 进程优先级
* NI: 进程 nice 值
* VIRT: 进程虚拟内存大小
* RES: 进程驻留内存大小
* SHR: 进程共享内存大小
* S: 进程状态
* %CPU: 进程 CPU 利用率
* %MEM: 进程内存利用率
* TIME+: 进程运行时间
top 命令可以指定更新间隔,例如:top -d 2 表示每 2 秒更新一次。
ps 命令
ps 命令可以显示系统中正在运行的进程的信息,包括内存使用情况。ps 命令的输出结果如下:
```
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 10252 1008 ? Ss 17:33 0:00 init
root 3 0.0 0.0 8640 816 ? S 17:33 0:00 udevd
root 5 0.0 0.0 6688 708 ? S 17:33 0:00 acpid
root 7 0.0 0.0 2432 684 ? S 17:33 0:00 ksoftirqd/0
root 9 0.0 0.0 1048 612 ? S 17:33 0:00 rcu_sched
root 11 0.0 0.0 1492 588 ? S 17:33 0:00 rcu_bh
```
其中,各列含义如下:* USER: 进程所有者
* PID: 进程 ID
* %CPU: 进程 CPU 利用率
* %MEM: 进程内存利用率
* VSZ: 进程虚拟内存大小
* RSS: 进程驻留内存大小
* TTY: 进程控制终端
* STAT: 进程状态
* START: 进程启动时间
* TIME: 进程运行时间
* COMMAND: 进程命令行
ps 命令可以指定进程信息显示格式,例如:ps -aux 表示显示所有进程的详细信息。
smem 命令
smem 命令可以显示系统中物理内存的详细信息,包括内存使用情况、内存分配情况等。smem 命令的输出结果如下:
```
PID Size RSS Shared_Clean Shared_Dirty Private Dirty Anonymous Slab Swap
2236 137072 12636 3628 0 90436 11196 90436 1048 256
2142 79800 4544 2792 0 49856 3328 49856 1048 256
2639 31744 2848 1528 0 27360 2048 27360 896 256
2113 25636 2236 1464 0 2217
2024-11-06