0%

进程管理命令

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
2
3
top  # 启动实时监控
top -p 1234 # 仅监控 PID 为 1234 的进程
top -d 5 # 每 5 秒刷新一次
输出解析:
  • 顶部系统信息区
    • 第一行:系统时间、运行时长、登录用户数、1/5/15 分钟平均负载(理想值 ≤ CPU 核心数)。
    • 第二行:进程总数(total)、运行中(running)、睡眠(sleeping)、停止(stopped)、僵尸进程(zombie)数量。
    • 第三行:CPU 使用率(us 用户态、sy 系统态、id 空闲、wa IO 等待等)。
    • 第四 / 五行:内存和交换分区使用情况(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
2
3
4
pstree  # 简单树状图
pstree -p # 显示进程 PID
pstree -u # 显示进程所属用户
pstree -aup # 显示完整命令、PID、用户(最详细)
示例输出:
1
2
3
systemd(1)─┬─sshd(1234)─┬─sshd(5678)─┬─bash(5679)
│ │ └─python(5890)
└─nginx(9876)───nginx(9877)

pgrep:快速查找进程 PID

pgrep 通过进程名直接查找对应的 PID,适合脚本或快速操作。

1
2
pgrep mysql  # 查找名为 mysql 的进程 PID
pgrep -u root # 查找 root 用户的所有进程 PID

进程内存分析命令

pmap:查看进程内存映射详情

pmap 显示进程使用的内存地址、映射文件及占用大小,适合分析进程内存分布。

1
pmap -d 1234  # 显示 PID 为 1234 的进程内存详情(-d 表示显示设备信息)

输出包含每个内存段的地址、权限、大小及关联的文件(如库文件、匿名内存)。

/proc/{PID}/smaps:进程内存详细统计

Linux 内核在 /proc 目录下提供了进程的实时信息,smaps 文件记录了进程内存段的详细使用情况(包括交换分区使用)。

1
2
# 查看进程的 Swap 占用
cat /proc/1234/smaps | grep Swap

进程性能监控命令

mpstat:多处理器性能分析

mpstat 专注于 CPU 使用率统计,尤其适合多核心系统,数据来源于 /proc/stat

1
2
3
mpstat  # 显示所有 CPU 核心的平均使用率
mpstat -P ALL # 显示每个 CPU 核心的详细使用率
mpstat 5 # 每 5 秒刷新一次

输出包含用户态(usr)、系统态(sys)、空闲(idle)等 CPU 时间占比。

pidstat:进程级资源监控

pidstat 可针对单个进程监控 CPU、内存、IO 和上下文切换,是精细化性能分析的工具。

1
2
3
4
pidstat -u -p 1234 5  # 每 5 秒监控 PID 1234 的 CPU 使用
pidstat -r -p 1234 # 监控 PID 1234 的内存使用
pidstat -d -p 1234 # 监控 PID 1234 的 IO 情况(读/写速率)
pidstat -w -p 1234 # 监控 PID 1234 的上下文切换(cswch/s 自愿切换,nvcswch/s 非自愿切换)

进程控制命令:终止进程

当进程异常或需要关闭时,使用以下命令终止进程:

  1. kill:通过 PID 终止进程

    1
    2
    kill 1234  # 发送默认信号(TERM,温和终止)
    kill -9 1234 # 发送 KILL 信号(强制终止,无法忽略)
  2. killall:通过进程名终止所有匹配进程

    1
    2
    killall nginx  # 终止所有 nginx 进程
    killall -9 java # 强制终止所有 Java 进程

欢迎关注我的其它发布渠道