主题
Linux进程管理:ps和kill命令详解
课程介绍
最后我们学习进程管理。程序运行时会创建进程,每个进程有独立的PID。ps命令用于查看进程信息,常用ps -ef查看所有进程;kill命令用于终止进程,kill PID发送终止信号,kill -9 PID强制终止进程。可以用ps -ef | grep过滤特定进程。进程管理是系统维护的重要技能。
1. 进程的概念
什么是进程?
进程是程序在操作系统中的一次运行实例。当程序被执行时,操作系统会:
- 为其分配系统资源(内存、CPU时间等)
- 创建一个独立的进程控制块(PCB)
- 分配唯一的进程ID(PID)用于标识
进程的特点
- 每个进程都有独立的进程ID(PID)
- 进程可以被用户或其他程序启动
- 进程之间有父子关系(PPID)
- 进程占用系统资源并消耗CPU时间
2. 查看进程:ps命令详解
ps命令基本语法
bash
ps [选项]常用选项组合:ps -ef
-e:显示系统中所有进程-f:以完整格式显示进程信息
bash
ps -efps -ef输出解读
| 列名 | 含义 | 示例 |
|---|---|---|
| UID | 启动进程的用户 | root |
| PID | 进程ID(唯一标识) | 12345 |
| PPID | 父进程ID | 1000 |
| C | CPU占用率(百分比) | 0 |
| STIME | 进程启动时间 | 14:30 |
| TTY | 启动进程的终端 | pts/0 |
| TIME | 累计占用CPU时间 | 00:00:03 |
| CMD | 进程的启动命令 | /usr/bin/nginx |
过滤进程信息
使用管道符|和grep命令过滤特定进程:
bash
ps -ef | grep 进程名例如,查找tail进程:
bash
ps -ef | grep tail注意事项: 过滤结果通常会显示两个条目,一个是目标进程,另一个是grep命令本身
3. 终止进程:kill命令详解
kill命令基本语法
bash
kill [选项] 进程ID常用选项
-9:强制终止进程(系统级别强制关闭)
进程终止的两种方式
1. 发送终止信号(默认方式)
bash
kill 进程ID- 向进程发送SIGTERM信号
- 进程有机会进行清理工作后自行终止
- 进程可能忽略此信号(不文明进程)
2. 强制终止进程
bash
kill -9 进程ID- 向进程发送SIGKILL信号
- 系统直接终止进程,不给清理机会
- 确保进程被终止,但可能导致数据丢失
4. 实践操作:进程管理综合应用
步骤1:启动一个测试进程
bash
tail步骤2:查看所有进程
bash
ps -ef步骤3:过滤并找到tail进程
bash
ps -ef | grep tail步骤4:使用默认方式终止进程
bash
kill 进程ID步骤5:再次启动tail进程并使用强制方式终止
bash
tail
# 另开一个终端
ps -ef | grep tail
kill -9 进程ID5. 命令速查
| 命令 | 功能 | 示例 |
|---|---|---|
ps -ef | 查看所有进程的完整信息 | ps -ef |
ps -ef grep 进程名 | 过滤查找特定进程 | ps -ef grep nginx |
kill 进程ID | 发送终止信号给进程 | kill 12345 |
kill -9 进程ID | 强制终止进程 | kill -9 12345 |
6. 常见问题与解决方案
| 问题 | 解决方案 |
|---|---|
| 找不到目标进程 | 检查进程名是否正确,使用更精确的过滤条件 |
| kill命令执行后进程仍存在 | 使用kill -9强制终止,或检查是否有子进程未终止 |
| 没有权限终止进程 | 使用root用户执行kill命令,或检查进程所属用户 |
| 误杀关键进程 | 谨慎确认进程ID,避免终止系统关键进程(如init、systemd等) |
课程总结
这节课我们学了进程管理。
ps命令查看进程: ps -ef - 查看所有进程的详细信息 ps -ef | grep 进程名 - 过滤查找特定进程
kill命令终止进程: kill 进程号 - 发送终止信号(进程可以清理后退出) kill -9 进程号 - 强制终止(直接杀掉,可能丢数据)
先用ps找到进程的PID,再用kill终止它。
下节课我们将学习Linux系统的资源监控命令,敬请期待!
课后练习
练习1(基础)
请在Linux终端中执行以下操作:
- 使用ps命令查看系统中所有进程
- 使用grep过滤出当前用户启动的进程
- 找出当前终端的进程PID
💡 提示:使用whoami查看当前用户名,使用grep配合过滤用户名。
练习2(进阶)
请尝试:
- 启动一个sleep 1000命令
- 使用ps命令找到该进程的PID
- 使用kill命令的两种方式(默认方式和-9方式)分别终止进程
- 观察两种终止方式的区别
💡 提示:默认kill命令给进程清理的机会,kill -9直接强制终止。
练习3(拓展)
请尝试:
- 使用top命令查找占用CPU最多的进程
- 记录进程的PID和命令名
- 使用ps -ef命令查看该进程的详细信息
- 使用kill命令终止该进程
💡 提示:top命令按q退出,按C按CPU排序,找到PID后使用kill命令终止。