Lazy loaded image
运维
Linux进程管理
字数 2313阅读时长 6 分钟
2026-2-17
2026-2-17
author
type
Post
status
Published
date
Feb 17, 2026
slug
summary
tags
Linux
category
运维
icon
password

1. 什么是进程?

在 Linux 中,进程(Process) 是正在运行的程序实例,是操作系统资源分配的基本单位。
  • 每个进程都有唯一的编号 —— PID(Process ID)
  • 所有进程都由一个“祖先”进程 initsystemd(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. 实时性能监控工具

除了 tophtop,还有以下专业工具:
工具
用途
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/messagesjournalctl

📌 总结一张表:常用进程管理命令速查

功能
命令
查看所有进程
ps auxps -ef
实时监控进程
tophtop
查看进程树
pstree -p
按名称查 PID
pgrep firefox
按名称杀进程
pkill firefoxkillall firefox
发送信号
kill -9 1234
后台运行
command &
忽略终端关闭
nohup command &
查看作业
jobs
切换前后台
fg %1, bg %1
查找高 CPU 进程
ps aux --sort=-%cpu \| head -10
上一篇
Linux systemd 服务管理
下一篇
Linux系统管理