飞翔飞翔
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
  • 学习路径
  • 基础入门

    • Linux 命令概述与环境准备
    • 文件与目录操作(上):ls、cd、pwd
    • 文件与目录操作(下):cat、touch、mkdir、rm、cp、mv
    • 获取帮助与基础工具:man、help、clear、exit、sudo
  • 文件权限

    • 文件权限管理:chmod、chown
  • 系统与监控

    • 进程管理与系统监控:ps、top、kill、df、du、free
    • 用户与环境:whoami、id、env、echo、history
  • 网络命令

    • 网络诊断(上):ping、curl、wget
    • 网络诊断(下):netstat、ss、ip
    • 网络抓包与高级工具:traceroute、tcpdump、nc
    • DNS 与防火墙:nslookup、dig、iptables
  • 文本处理

    • 文本搜索:grep
    • 文本处理(上):awk
    • 文本处理(下):sed
    • 文本排序与统计:sort、uniq、wc
    • 文件查看与查找:head、tail、cut、find
    • 归档压缩与管道组合:tar、gzip、xargs
  • 开发工具

    • 开发工具链(上):gcc、make
    • 开发工具链(下):gdb、time
    • 版本控制:git
    • 远程操作:ssh、scp
    • 编辑器:vim、nano
  • Shell 编程

    • Shell 编程基础(上):变量、管道、重定向
    • Shell 编程基础(下):条件、循环、函数
  • 综合实战

    • 综合实战:日志分析

进程管理与系统监控:ps、top、kill、df、du、free

进程概念

进程(Process)是程序的一次执行实例。Linux 中每个进程都有唯一的 PID(Process ID)。

ps:查看进程快照

ps(Process Status)显示当前终端的进程快照。

# 基础用法(当前终端的进程)
ps

# 显示所有用户的所有进程(最常用)
ps aux

# 标准格式显示所有进程
ps -ef

# 查找特定进程(配合 grep)
ps aux | grep nginx

# 显示进程树
ps auxf

ps aux 输出解读

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1 185436  6124 ?        Ss   Jan14   0:03 /sbin/init
user      1234  0.1  0.5 512340 20480 pts/0    S+   10:00   0:02 vim file.txt
字段含义说明
USER进程所有者启动进程的用户
PID进程 ID唯一标识符
%CPUCPU 使用率占一个 CPU 核心的百分比
%MEM内存使用率占物理内存的百分比
VSZ虚拟内存进程申请的虚拟内存大小(KB)
RSS常驻内存实际占用的物理内存(KB)
TTY终端? 表示后台进程
STAT状态R=运行, S=睡眠, Z=僵尸
START启动时间进程启动的时间
TIMECPU 时间累计使用的 CPU 时间
COMMAND命令启动进程的命令

进程状态 STAT

状态含义
RRunning(运行中)
SSleeping(睡眠中,可中断)
DDisk Sleep(不可中断睡眠,通常 IO 操作)
ZZombie(僵尸进程,已终止但父进程未回收)
TStopped(被信号停止)
s会话领导者
+前台进程

top:实时系统监控

top 实时显示系统资源使用情况和进程列表,是排查性能问题的首选工具。

top

# 按 CPU 使用率排序(默认)
# 按 M 切换为内存排序
# 按 P 切换回 CPU 排序
# 按 k 输入 PID 终止进程
# 按 q 退出

top 界面解读

top - 10:30:00 up 5 days,  2:15,  1 user,  load average: 0.52, 0.58, 0.60
Tasks: 235 total,   1 running, 234 sleeping,   0 stopped,   0 zombie
%Cpu(s):  5.2 us,  2.1 sy,  0.0 ni, 92.1 id,  0.3 wa,  0.0 hi,  0.3 si
MiB Mem :   7822.4 total,   1234.5 free,   4567.8 used,   2020.1 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used
行含义
第 1 行系统时间、运行时长、用户数、1/5/15 分钟负载
第 2 行总进程数、运行中、睡眠中、停止、僵尸
第 3 行CPU 使用率:us=用户态, sy=内核态, id=空闲, wa=等待 IO
第 4 行内存总量、空闲、已用、缓存
第 5 行交换空间总量、空闲、已用

负载(load average):1/5/15 分钟内,处于运行或不可中断状态的平均进程数。单核 CPU 上,1.0 表示满负荷。

kill:终止进程

kill 向进程发送信号,默认发送 SIGTERM(终止信号)。

# 查看所有信号
kill -l

# 温和终止(默认 SIGTERM,信号 15)
kill 1234

# 强制终止(SIGKILL,信号 9,无法被捕获)
kill -9 1234

# 按名称终止所有匹配进程
killall firefox
killall -9 nginx

常用信号

信号数值名称作用
1SIGHUP挂起终端断开时发送,常用于重载配置
9SIGKILL强制终止立即终止,无法被捕获或忽略
15SIGTERM终止请求终止,进程可以清理资源后退出
18SIGCONT继续恢复被停止的进程
19SIGSTOP停止暂停进程(不可被捕获)

df:查看磁盘空间

df(Disk Free)显示文件系统的磁盘空间使用情况。

# 基础用法(字节,难读)
df

# 人类可读(最常用)
df -h

# 显示文件系统类型
df -Th

# 只看本地文件系统
df -hl

df -h 输出示例

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        98G   45G   48G  49% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
/dev/sdb1       458G  120G  315G  28% /data
字段含义
Filesystem文件系统设备
Size总容量
Used已用空间
Avail可用空间
Use%使用百分比
Mounted on挂载点

du:查看目录大小

du(Disk Usage)显示目录或文件的磁盘使用量。

# 显示当前目录下所有子目录大小(字节,递归)
du

# 人类可读(最常用)
du -h

# 只显示当前目录总大小
du -sh

# 显示当前目录下每个子目录的大小(排查大文件神器)
du -sh *

# 显示指定目录大小
du -sh /var/log

# 限制目录深度
du -h --max-depth=1

排查磁盘占用的经典组合:

# 找出当前目录下最大的 10 个目录
du -sh * | sort -rh | head -n 10

free:查看内存使用

free 显示系统内存和交换空间的使用情况。

# 基础用法(KB)
free

# 人类可读(最常用)
free -h

# 显示详细信息(含缓存)
free -m

free -h 输出解读

              total        used        free      shared  buff/cache   available
Mem:           7.6Gi       4.2Gi       1.1Gi       256Mi       2.3Gi       2.8Gi
Swap:          2.0Gi          0B       2.0Gi
字段含义
total总内存
used已用内存(含缓存)
free完全空闲
shared共享内存
buff/cache缓存和缓冲区
available可用内存(含可回收缓存)

注意:used 高不一定内存不足,Linux 会把空闲内存用于缓存。看 available 更准确。

本篇小结

  • ps aux:查看所有进程快照,关注 PID、%CPU、%MEM、STAT
  • top:实时监控系统资源,关注 load average、CPU、内存、IO wait
  • kill:发送信号终止进程,kill -9 是强制终止的最后手段
  • df -h:查看文件系统磁盘空间,关注 Use%
  • du -sh:查看目录大小,du -sh * | sort -rh | head 排查大文件
  • free -h:查看内存使用,关注 available 而非 used

动手实践

  1. 查看当前所有进程:

    ps aux
    ps aux | grep bash
    
  2. 运行 top,观察:

    • 按 M 切换到内存排序
    • 按 P 切换回 CPU 排序
    • 按 k 输入 PID 终止一个进程(谨慎操作)
    • 按 q 退出
  3. 查看磁盘空间:

    df -h
    du -sh ~
    du -sh ~/* | sort -rh | head -n 5
    
  4. 查看内存使用:

    free -h
    
  5. 启动一个后台进程并终止它:

    sleep 300 &          # 后台运行 300 秒
    ps aux | grep sleep  # 找到 PID
    kill -15 <PID>       # 温和终止
    
  6. 思考:为什么 kill -9 是"最后手段"?如果进程正在写入文件,强制终止会导致什么问题?

下一页
用户与环境:whoami、id、env、echo、history