概述
在Linux中,有许多命令和工具可用于查看系统的资源使用情况。以下是一些常用的方式:
-
top:
top
命令是最常见的实时系统监视工具之一。它显示了当前运行的进程列表,以及每个进程的CPU、内存使用情况、nice
值等信息。top
命令还会不断刷新数据,展示最新的系统状态。 -
htop:
htop
是top
的一个增强版,提供了更好的可视化界面和更多功能,如颜色编码、水平滚动、搜索等功能。安装htop
后,在终端输入htop
即可使用。 -
ps:
ps
命令用于列出当前运行的进程。通过添加适当的选项,可以获取有关进程的各种信息,如CPU使用率、内存使用情况等。例如,ps -aux
会显示所有进程的详细信息。 -
free:
free
命令显示系统的内存使用情况,包括物理内存、交换内存和缓存等。 -
vmstat:
vmstat
报告虚拟内存统计信息,包括系统活动、进程状态、内存使用情况等。 -
iostat:
iostat
显示设备级别的I/O统计信息,如磁盘读写速率、CPU利用率等。 -
df:
df
命令显示文件系统的磁盘空间使用情况,包括已使用的空间、剩余的空间和总容量。 -
du:
du
命令显示目录或文件所占的磁盘空间大小。 -
netstat:
netstat
显示网络连接、路由表、接口统计等信息。 -
ifconfig:
ifconfig
显示网络接口的配置信息,如IP地址、MAC地址、收发包数量等。 -
lsof:
lsof
列出系统中打开的文件,包括文件所属的进程、文件类型等信息。 -
dmesg:
dmesg
显示内核消息,包括硬件检测结果、错误信息等。 -
sysstat:这是一个包含多种工具的软件包,如
sar
(系统活动报告)、iostat
、mpstat
等,用于深入分析系统性能。 -
System Monitor GUI:如果你使用的是图形化桌面环境,可以使用内置的系统监视器应用,如Gnome System Monitor、KSysGuard等。
-
/proc:
/proc
是一个虚拟文件系统,包含了大量关于系统和进程的信息。通过阅读/proc
下的文件,可以获得各种系统信息。
一、实时系统监视 top
top
命令是Linux系统中常用的实时系统监视工具,它能够显示系统中各个进程的资源使用情况,包括CPU使用率、内存使用情况、进程状态等。要在终端中启动top
,只需输入top
命令并按回车键。top
会立即显示当前系统状态,并持续刷新数据。
2.1 显示内容
这张图片显示了一个典型的top
命令输出,它提供了系统资源使用情况的实时概览。以下是各部分的解释:
-
标题行:顶部一行显示了当前时间、系统运行时间、登录用户数和平均负载。在这个例子中,系统已经运行了5天53分钟,没有用户登录,平均负载分别为0.52、0.58和0.59。
-
系统资源使用情况:接下来的一行显示了CPU和内存使用情况。在这个例子中,CPU使用率为5.3%(用户态+系统态),内存使用率为11796 MiB,交换空间使用了2399 MiB。
-
进程状态:第三行显示了进程总数、运行中的进程数、停止的进程数和僵尸进程数。在这个例子中,共有10个进程,1个正在运行,9个处于睡眠状态,没有停止或僵尸进程。
-
CPU使用率:第四行显示了CPU使用率的细分,包括用户态、系统态、空闲态、等待I/O、硬件中断、软件中断和被偷取的时间。在这个例子中,用户态和系统态分别使用了5.3%,空闲态使用了89.3%,其余的百分比由其他状态占据。
-
内存使用情况:第五行显示了内存总量、空闲内存、缓冲区内存和可用内存。在这个例子中,总内存为16016.5 MiB,其中有3995.9 MiB空闲,11796.6 MiB未被使用,224.0 MiB作为缓冲区使用,还有4089.3 MiB可供使用。
-
交换空间使用情况:第六行显示了交换空间总量、空闲空间和使用空间。在这个例子中,总交换空间为29440.1 MiB,其中有27070.5 MiB空闲,2369.6 MiB被使用。
-
进程列表:剩下的部分是进程列表,每一行代表一个进程。列表的列包括:
PID
:进程ID。USER
:进程的所有者。PR
:优先级。NI
:nice
值。VIRT
:虚拟内存使用情况。RES
:常驻集大小,即非交换内存使用情况。SHR
:共享内存大小。S
:进程状态(R=运行、S=睡眠等)。%CPU
:CPU使用率。%MEM
:内存使用率。TIME+
:累计CPU时间。COMMAND
:进程名称。
在这个例子中,可以看到几个进程,包括init
、bash
和top
本身。top
进程的CPU使用率为0.0%,内存使用率为0.0%,累计CPU时间为0秒。
2.2 交互式操作
top
命令具有丰富的交互式功能,可以在运行过程中进行操作。按h
键可以显示帮助信息,了解更多快捷键和操作。
刷新频率
- 设置刷新频率:按
s
键,然后输入秒数,例如5
,表示每 5 秒刷新一次。
排序
- 按 CPU 使用率排序:按
o
键,然后按c
或C
键,将按 CPU 使用率从高到低排序。- 按内存使用率排序:按
o
键,然后按m
或M
键,将按内存使用率从高到低排序。
进程操作
改变进程优先级:
- 选择一个进程:使用方向键将光标移动到想要操作的进程上。
- 按
r
键,然后输入新的 nice 值(范围 -20 至 19),并按 Enter 确认。杀死进程:
- 选择一个进程:使用方向键将光标移动到想要操作的进程上。
- 按
k
键,然后输入进程 ID 和要发送的信号(默认为SIGTERM
),并按 Enter 确认。
显示选项
- 显示线程:按
H
键显示或隐藏线程信息。- 显示内存使用情况:按
m
键切换显示内存使用情况(总内存、空闲内存等)。
常用快捷键
h
:显示帮助信息。H
:显示线程信息。m
:切换显示内存使用情况(总内存、空闲内存等)。w
:保存当前top
界面到文件。s
:设置更新间隔。q
:退出top
。
四、查看内存 free
free
是一个常用的 Linux 命令,用于显示系统内存的使用情况。它可以提供有关物理内存、交换空间和共享内存的信息。
4.1 基本语法
free [选项]
选项
-h
或--human-readable
: 以人类可读的格式显示内存大小(例如,自动将字节转换为 KB, MB, GB 等)。-m
或--mega
: 显示以兆字节 (MB) 为单位的内存大小。-k
或--kilo
: 显示以千字节 (KB) 为单位的内存大小(这是默认值)。-g
或--giga
: 显示以吉字节 (GB) 为单位的内存大小。-b
或--bytes
: 显示以字节 (B) 为单位的内存大小。-l
或--low
: 显示低内存区域的使用情况(仅适用于某些系统)。-t
或--total
: 在输出末尾添加一行汇总所有类型的内存。-s
或--seconds
: 每秒更新一次显示结果,直到被中断。-V
或--version
: 显示版本信息。
输出解释
free
命令的基本输出通常包含以下几行:
- total: 总共可用的内存。
- used: 当前使用的内存。
- free: 当前未被任何进程使用的空闲内存。
- shared: 被多个进程共享的内存总量。
- buff/cache: 用于文件系统缓存和内核缓冲区的内存总量。
- available: 可供新应用程序使用的内存量估计。
注意事项
buff/cache
列显示的是被用作文件系统缓存和内核缓冲区的内存。这部分内存可以很快地被释放出来供其他用途使用。available
列显示的是系统可以分配给新的应用程序的内存量。这个值考虑了系统需要保持响应性的内存预留。- 通常情况下,即使
used
列显示大量的内存被使用,但只要available
列显示有足够的内存,系统性能仍然应该是良好的。
4.2 示例
假设我们的系统有 2848MB 的物理内存和 1GB 的交换空间,使用 free -m
命令后,输出可能如下所示:
total used free shared buffers cached available
Mem: 2848 2142 706 0 0 1234 1942
Swap: 1024 0 1024
- Mem:
total
: 2848MB 的物理内存。used
: 2142MB 的物理内存被使用。free
: 706MB 的物理内存是真正空闲的。buffers
: 0MB 用于文件系统缓存。cached
: 1234MB 用于内核缓冲区。available
: 1942MB 的物理内存可供新进程使用。
- Swap:
total
: 1024MB 的交换空间。used
: 0MB 的交换空间被使用。free
: 1024MB 的交换空间是空闲的。
缓冲和缓存的作用
- buffers/cached: 这些内存被系统用来缓存文件和其他数据,以便在需要时能够更快地访问它们,从而提高系统性能。
- available: 这个数值表示在系统需要更多内存时可以迅速分配给新进程的内存量。即使
used
显示大量内存被占用,但只要available
数值足够大,系统仍然能够高效运行。
内存使用建议
- 实体内存使用: Linux 系统倾向于尽可能多地使用内存进行缓存和缓冲,这是为了提高文件和数据的读取速度。因此,即使 “used” 显示内存被大量占用也是正常现象。
- swap 使用: 如果交换空间(swap)被大量使用(超过 20%),这通常表明实体内存不足。在这种情况下,考虑增加物理内存可能是更好的选择,因为频繁使用 swap 会导致系统性能下降。
4.3 缓存机制
Linux系统为了提高系统性能,会将最常使用的或是最近使用到的文件数据缓存(cathe)下来,这样未来系统要使用该文件时,就可以直接由内存中查找取出,而不需要重新读取硬盘,速度自然就加快了。因此,物理内存被用光是正常的现象。
缓存的工作原理
- 读取缓存 (read cache):当文件第一次被读取时,其内容会被复制到内存中的缓存区域。之后对该文件的读取操作可以直接从缓存中读取,而不需要访问磁盘。
- 写入缓存 (write cache):类似地,当文件被修改时,更改的内容也会被暂存在内存中。随后的写入操作可以先更新缓存中的数据,然后系统会在适当的时候将这些更改同步到磁盘上。
缓存的好处
- 提高性能:由于内存的访问速度远快于磁盘,使用缓存可以显著减少 I/O 操作的时间,进而提升整个系统的响应速度。
- 减少磁盘 I/O:通过减少对磁盘的直接访问,可以减轻磁盘负担,延长磁盘寿命。
- 优化资源利用:Linux 会尽可能利用空闲内存来缓存数据,这样即使看起来所有的内存都被“用光”了,实际上系统仍然可以高效运行。
物理内存的使用
- 缓存和缓冲区:Linux 会使用一部分物理内存作为缓存和缓冲区,存储经常使用的文件数据。这部分内存被称为
buffers
和cached
。 - 可用内存:尽管
used
列显示了大量的内存被占用,但其中一部分实际上是用于缓存和缓冲的数据。这些数据在需要时可以迅速释放,以便为新的进程分配内存。因此,available
列显示了系统可以立即分配给新进程的内存量。