1. top
命令说明
top
是 Linux 系统中用于实时监控系统运行状态的命令,主要显示系统的负载、资源使用情况以及各个进程的详细信息。
字段说明
PID USER %CPU %MEM TIME+ COMMAND 1234 root 95.0 1.2 0:00.05 my_process 5678 user 30.1 0.5 0:00.02 other_process
PID
: 进程 ID,用于唯一标识每个进程。USER
: 运行进程的用户。%CPU
: 当前进程使用的 CPU 百分比。%MEM
: 当前进程使用的内存百分比。TIME+
: 进程使用的累计 CPU 时间。COMMAND
: 执行的命令或程序名称。
案例分析
输出示例:
1234 root 95.0 1.2 0:00.05 my_process 5678 user 30.1 0.5 0:00.02 other_process
-
进程
my_process
- 使用了 95% CPU,说明是一个 CPU 密集型任务,可能是某些代码运行异常或高计算需求。
- 内存使用为 1.2%,内存消耗较少。
-
进程
other_process
- 占用 30.1% CPU,可能是普通的计算任务。
- 内存使用 0.5%,资源占用较低。
解决资源问题
- 终止高占用的异常进程:
kill -9 1234
- 调整优先级: 降低
my_process
的优先级,避免影响其他任务:renice -n 10 -p 1234
- 进一步分析: 使用
strace
或lsof
查看进程调用与资源占用:strace -p 1234 lsof -p 1234
2. free
命令说明
free
用于查看系统内存的使用情况,包括空闲内存、缓存和交换空间。
字段说明
运行命令:
free -h
输出示例:
total used free shared buff/cache available Mem: 8Gi 6Gi 1Gi 0.2Gi 1Gi 1.8Gi Swap: 4Gi 1Gi 3Gi
total
: 总内存大小。used
: 已使用内存。free
: 未使用内存。buff/cache
: 缓存和缓冲占用的内存。available
: 当前可用的内存。Swap
: 交换分区的使用情况。
案例分析
在上例中:
- 系统总内存 8Gi,其中 6Gi 已使用,剩余 1Gi。
- 缓存占用 1Gi,剩余可用内存 1.8Gi,说明内存压力不大。
- 交换分区总 4Gi,已用 1Gi,表示部分内存被交换到磁盘。
解决内存不足问题
-
清理缓存: 如果
buff/cache
占用过高,可手动释放缓存:echo 3 > /proc/sys/vm/drop_caches
-
排查内存占用进程: 配合
top
命令,查看高内存使用的进程:top -o %MEM
-
扩展 Swap 空间: 当 Swap 空间不足时,可临时添加 Swap 文件:
fallocate -l 2G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile
综合使用场景
假设发现系统运行缓慢:
- 使用
free -h
检查内存使用情况,判断是否存在内存不足或 Swap 空间使用过高。 - 使用
top
找到占用资源的异常进程,根据%CPU
或%MEM
排序。 - 根据分析结果:
- 杀掉异常进程,释放系统资源。
- 优化高负载程序或调整其优先级。
- 扩展 Swap 或释放缓存,缓解内存压力。
通过结合 top
和 free
的数据,可以快速定位并解决系统性能问题,提升系统运行效率。