Linux 进程管理命令详解:从查看监控到进程控制
在 Linux 系统管理中,进程管理是核心技能之一。无论是排查性能问题、终止异常进程,还是监控系统负载,都需要熟练掌握进程管理命令。本文将系统介绍常用的进程查看、监控、分析及控制命令,帮助你全面掌握进程管理技巧。
进程查看命令
ps:静态查看进程快照
ps(Process Status)用于显示系统当前运行的进程快照,是最基础的进程查看工具。
常用参数组合:
ps aux:显示所有用户的所有进程(包括无终端的后台进程),输出详细信息。1
ps aux
ps -ef:以全格式显示进程信息,包含进程间的父子关系。1
ps -ef | grep java # 查找与 Java 相关的进程
输出字段解析:
| 字段 | 含义说明 |
|---|---|
USER |
进程所属用户 |
PID |
进程唯一标识符(用于后续操作,如终止进程) |
%CPU |
进程占用 CPU 的百分比 |
%MEM |
进程占用物理内存的百分比 |
VSZ |
进程使用的虚拟内存大小(单位:KB) |
RSS |
进程使用的物理内存大小(单位:KB,不包含交换分区) |
TTY |
进程运行的终端(? 表示无终端,通常为系统进程) |
STAT |
进程状态(关键状态:R 运行中、S 睡眠、Z 僵尸进程、T 停止) |
START |
进程启动时间 |
TIME |
进程累计占用 CPU 的时间 |
COMMAND |
启动进程的命令(含路径和参数) |
实用技巧:
按资源占用排序:
1
2
3
4
5# 查看占用内存最多的前 10 个进程
ps aux | head -1; ps aux | grep -v PID | sort -rn -k +4 | head
# 查看占用 CPU 最多的前 10 个进程
ps aux | head -1; ps aux | grep -v PID | sort -rn -k +3 | head
top:实时监控进程动态
top 命令提供动态实时的进程监控,默认每 3 秒刷新一次,适合跟踪系统资源占用变化。
基本用法:
1 | top # 启动实时监控 |
输出解析:
- 顶部系统信息区:
- 第一行:系统时间、运行时长、登录用户数、1/5/15 分钟平均负载(理想值 ≤ CPU 核心数)。
- 第二行:进程总数(
total)、运行中(running)、睡眠(sleeping)、停止(stopped)、僵尸进程(zombie)数量。 - 第三行:CPU 使用率(
us用户态、sy系统态、id空闲、waIO 等待等)。 - 第四 / 五行:内存和交换分区使用情况(
total总量、free空闲、used已用、buff/cache缓存)。
- 进程列表区:与
ps类似,但增加了优先级(PR)、共享内存(SHR)等字段。
交互操作(在 top 界面中输入):
P:按 CPU 使用率排序(默认)。M:按内存使用率排序。N:按 PID 排序。k:输入 PID 终止进程(相当于kill命令)。1:显示所有 CPU 核心的使用率(多核心系统)。H:切换显示线程 / 进程模式。q:退出top。
pstree:查看进程树状关系
pstree 以树状图展示进程间的父子关系,清晰呈现进程依赖。
常用参数:
1 | pstree # 简单树状图 |
示例输出:
1 | systemd(1)─┬─sshd(1234)─┬─sshd(5678)─┬─bash(5679) |
pgrep:快速查找进程 PID
pgrep 通过进程名直接查找对应的 PID,适合脚本或快速操作。
1 | pgrep mysql # 查找名为 mysql 的进程 PID |
进程内存分析命令
pmap:查看进程内存映射详情
pmap 显示进程使用的内存地址、映射文件及占用大小,适合分析进程内存分布。
1 | pmap -d 1234 # 显示 PID 为 1234 的进程内存详情(-d 表示显示设备信息) |
输出包含每个内存段的地址、权限、大小及关联的文件(如库文件、匿名内存)。
/proc/{PID}/smaps:进程内存详细统计
Linux 内核在 /proc 目录下提供了进程的实时信息,smaps 文件记录了进程内存段的详细使用情况(包括交换分区使用)。
1 | # 查看进程的 Swap 占用 |
进程性能监控命令
mpstat:多处理器性能分析
mpstat 专注于 CPU 使用率统计,尤其适合多核心系统,数据来源于 /proc/stat。
1 | mpstat # 显示所有 CPU 核心的平均使用率 |
输出包含用户态(usr)、系统态(sys)、空闲(idle)等 CPU 时间占比。
pidstat:进程级资源监控
pidstat 可针对单个进程监控 CPU、内存、IO 和上下文切换,是精细化性能分析的工具。
1 | pidstat -u -p 1234 5 # 每 5 秒监控 PID 1234 的 CPU 使用 |
进程控制命令:终止进程
当进程异常或需要关闭时,使用以下命令终止进程:
kill:通过 PID 终止进程1
2kill 1234 # 发送默认信号(TERM,温和终止)
kill -9 1234 # 发送 KILL 信号(强制终止,无法忽略)killall:通过进程名终止所有匹配进程1
2killall nginx # 终止所有 nginx 进程
killall -9 java # 强制终止所有 Java 进程