author
type
Post
status
Published
date
Feb 17, 2026
slug
summary
tags
Linux
category
运维
icon
password
1. 什么是进程?
在 Linux 中,进程(Process) 是正在运行的程序实例,是操作系统资源分配的基本单位。
- 每个进程都有唯一的编号 —— PID(Process ID)
- 所有进程都由一个“祖先”进程
init或systemd(PID=1)派生而来
- 进程会占用 CPU、内存、文件描述符等系统资源
🔧 示例:当你运行
vim a.txt,系统就会创建一个新的进程来执行这个编辑操作。2. 进程的类型
类型 | 说明 |
前台进程 | 占据终端,用户可交互,结束前无法输入其他命令 |
后台进程 | 在后台运行,不阻塞终端,可用于长期任务 |
守护进程(Daemon) | 长期运行的服务进程(如 sshd、crond),通常以 d 结尾,如 httpd, rsyslogd |
📌 小知识:
- 守护进程一般没有控制终端
- 多数通过
systemctl start xxx.service启动
3. 进程的状态说明
ps 命令中常见的状态码:状态字母 | 含义 |
R (Running/Runnable) | 正在运行或就绪,等待 CPU 调度 |
S (Sleeping) | 可中断睡眠(等待事件发生,如 I/O) |
D (Uninterruptible Sleep) | 不可中断 sleep(通常是磁盘 I/O 中,不能被 kill -9 杀死)⚠️ 危险 |
T (Stopped) | 已停止(由 job control 暂停,如 Ctrl+Z) |
Z (Zombie) | 僵尸进程 —— 子进程已退出但父进程未回收其资源 ❌ 应避免大量出现 |
📝 补充:
+表示前台进程组
<表示优先级高(nice < 0)
N表示优先级低(nice > 0)
4. 常用进程查看命令(ps, top, htop)
✅ ps —— 显示当前时刻的进程快照
⚠️ 注意:ps是静态的,不会实时更新
常见用法组合
命令 | 作用 |
ps | 当前 shell 下的进程 |
ps aux | 查看系统所有进程(推荐!BSD 风格) |
ps -ef | 标准 UNIX 风格输出,常用于找父进程 PPID |
🔹 输出字段解释(
ps aux):字段 | 说明 |
USER | 运行该进程的用户 |
PID | 进程 ID |
%CPU | 占用 CPU 百分比 |
%MEM | 占用内存百分比 |
VSZ | 虚拟内存大小(KB) |
RSS | 物理内存实际使用量(KB) |
TTY | 关联的终端设备 |
STAT | 进程状态 |
START | 启动时间 |
TIME | 累计 CPU 使用时间 |
COMMAND | 启动命令 |
🔧 实战技巧:
✅ top —— 动态实时监控进程
相当于 Linux 的“任务管理器”。
启动后常用快捷键:
键位 | 功能 |
P | 按 CPU 使用率排序 |
M | 按内存使用率排序 |
k | 杀死某个进程(输入 PID 和信号) |
q | 退出 |
1 | 显示每个 CPU 核心的负载情况 |
🟢 提升体验:安装
htop(更友好)✅ htop 优势:
- 彩色界面
- 支持鼠标点击
- 显示 CPU / 内存条状图
- 可直接滚动查看全部进程
5. 进程树与父子关系(pstree)
显示进程之间的父子关系,帮助理解服务是如何启动的。
示例输出片段:
📌 重要提示:父进程死亡可能导致子进程变成“孤儿进程”,最终被 systemd 收养(PPID=1)。
6. 杀死或终止进程(kill, pkill, killall)
✅ kill —— 向进程发送信号
语法:
kill [信号] PID常见信号对照表
信号编号 | 名称 | 作用 |
1 | SIGHUP | 重启进程(常用于服务平滑重载配置) |
9 | SIGKILL | 强制杀死(不可捕获/忽略)⚠️ 最暴力 |
15 | SIGTERM | 正常终止(允许清理资源,默认值) |
💡 示例:
✅ pkill / pgrep —— 按名称查找并操作进程
✅ killall —— 按名字终杀所有同名进程
⚠️ 注意安全:不要随意对关键服务使用-9!
7. 信号机制详解(Signal)
Linux 中进程间通信的重要方式之一。当按下
Ctrl+C 或执行 kill 命令时,其实就是发送了一个信号。常见信号总结
信号 | 触发场景 | 是否可忽略 |
SIGINT (2) | Ctrl+C 中断程序 | ✅ 可被捕获 |
SIGQUIT (3) | Ctrl+\ 产生 core dump | ✅ |
SIGTERM (15) | 软件正常终止 | ✅ |
SIGKILL (9) | 不能被捕获,立即终止 | ❌ 不可拦截 |
SIGHUP (1) | 终端断开或配置重载 | ✅ (某些服务如 nginx 会重读配置) |
SIGSTOP (19) | 暂停进程(类似 Ctrl+Z) | ❌ 不可忽略 |
SIGCONT (18) | 恢复暂停的进程 | ✅ |
🎯 应用建议:
- 优先尝试
SIGTERM(15)让程序自行关闭资源
- 只有无法响应才用
SIGKILL(9)
8. 作业控制:前台/后台进程管理(&、jobs、fg、bg)
适用于在同一终端中管理多个任务。
🔧 后台运行命令
系统返回:
🔍 查看后台作业
输出示例:
⚙️ 前后台切换
📦 nohup —— 忽略挂断信号,保持运行
即使你关闭终端也不受影响!
✅ 适用于远程执行耗时脚本!
9. 实时性能监控工具
除了
top 和 htop,还有以下专业工具:工具 | 用途 |
vmstat 1 | 查看系统整体健康:进程、内存、I/O、CPU |
iostat -x 1 | 查看磁盘 I/O 性能瓶颈 |
iotop | 查看哪个进程最耗磁盘 IO |
sar(来自 sysstat 包) | 收集和查看历史性能数据 |
🔧 示例:
10. 实战:服务器变慢了怎么办?
👉 典型问题:网站响应延迟、登录卡顿、load average 很高
🔎 排查流程(按顺序进行)
🚨 其他常见原因检查清单:
问题 | 检查命令 |
是否磁盘满了? | df -h |
是否内存不足导致频繁 swap? | free -h, vmstat |
是否网络堵塞? | iftop, nethogs |
是否日志疯狂写入? | ls -laS /var/log/, journalctl --disk-usage |
是否遭黑客入侵挖矿? | ps aux \| grep XMR(XMRig 等病毒) |
📘 学习建议
建议 | 说明 |
✅ 多动手练习 | 在虚拟机中模拟各种进程情况 |
✅ 记住几个核心命令 | ps aux, top, kill, pkill, htop |
✅ 建立故障排查思维模型 | “现象 → 工具 → 分析 → 解决” 四步法 |
✅ 了解应用行为特征 | 如 mysql、nginx 的典型进程数量 |
✅ 日志配合分析 | 查进程异常时也看 /var/log/messages 和 journalctl |
📌 总结一张表:常用进程管理命令速查
功能 | 命令 |
查看所有进程 | ps aux 或 ps -ef |
实时监控进程 | top 或 htop |
查看进程树 | pstree -p |
按名称查 PID | pgrep firefox |
按名称杀进程 | pkill firefox 或 killall firefox |
发送信号 | kill -9 1234 |
后台运行 | command & |
忽略终端关闭 | nohup command & |
查看作业 | jobs |
切换前后台 | fg %1, bg %1 |
查找高 CPU 进程 | ps aux --sort=-%cpu \| head -10 |
- 作者:NotionNext
- 链接:https://tangly1024.com/article/30adb897-8f81-80b6-9e9a-c07e6a998ae0
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。











