进程管理
前言
在Linux系统的日常运维与开发工作中,系统中所运行的每一个程序都表现为一个或多个进程。进程是系统进行资源分配和调度的基本单位,深入理解并有效管理进程,是掌握Linux系统核心能力的关键一环。
以下是 九、进程管理 的重新整理与详细说明,内容按照逻辑结构重新组织,命令部分配有详细解释与应用场景说明,便于理解与记忆。
一、程序与进程的基本概念
1. 程序与进程的关系
- 程序:存储在硬盘上的静态可执行文件,如
/usr/bin/firefox。 - 进程:程序在内存中运行的实例,是系统进行资源分配和调度的基本单位。
比喻:
- 程序就像一本书
- 进程,就像你打开一本书的过程
2. 父进程与子进程
- 父进程:创建其他进程的进程,如系统启动时的
systemd。 - 子进程:由父进程创建的进程,如用户启动的
bash下的vim。
二、查看进程信息
1. ps 命令:静态查看进程
功能:显示当前系统中的进程状态。
常用选项:
| 选项 | 说明 |
|---|---|
ps -aux | 显示所有用户的进程(BSD 风格) |
ps -ef | 以标准格式显示所有进程(System V 风格) |
ps -u 用户名 | 查看指定用户的进程 |
输出字段说明:
| 字段 | 说明 |
|---|---|
| USER | 进程所有者 |
| PID | 进程ID |
| %CPU | CPU 占用率 |
| %MEM | 内存占用率 |
| STAT | 进程状态(R: 运行, S: 睡眠, Z: 僵尸, T: 停止) |
| START | 启动时间 |
| COMMAND | 启动命令 |
示例:
ps -aux | grep vim # 查找所有 vim 进程
2. top 命令:动态查看进程
功能:实时显示系统资源使用情况和进程状态。
常用快捷键:
| 快捷键 | 功能 |
|---|---|
P | 按 CPU 使用率排序 |
M | 按内存使用率排序 |
T | 按运行时间排序 |
1 | 显示所有 CPU 核心状态 |
q | 退出 |
示例:
top # 启动动态监控
3. pgrep 命令:根据条件查询进程
功能:根据名称、用户、终端等条件查找进程 PID。
常用选项:
| 选项 | 说明 |
|---|---|
-l | 显示进程名和 PID |
-u 用户 | 查找指定用户的进程 |
-t 终端 | 查找在指定终端运行的进程 |
示例:
pgrep -l -u root -t tty1 # 查找 root 用户在 tty1 终端上的进程
4. pstree 命令:以树形显示进程
功能:以树状结构显示进程及其父子关系。
常用选项:
| 选项 | 说明 |
|---|---|
-p | 显示 PID |
-u | 显示用户名 |
-a | 显示完整命令 |
示例:
pstree -aup # 显示所有进程树,包括用户和命令
三、进程的启动方式
1. 手工启动
- 前台启动:命令执行期间占用终端;
- 后台启动:在命令后加
&,不占用终端。
示例:
cp /dev/cdrom mycd.iso & # 后台复制光盘
2. 调度启动
- 使用
at设置一次性任务; - 使用
crontab设置周期性任务。
四、进程的前后台调度
1. Ctrl + Z:挂起进程
将当前前台进程暂停并放入后台。
2. jobs:查看后台任务
示例:
jobs -l # 显示所有后台任务及其 PID
3. fg / bg:前后台切换
| 命令 | 功能 |
|---|---|
fg %任务号 | 将后台任务调至前台 |
bg %任务号 | 将挂起的任务在后台继续运行 |
示例:
fg %1 # 将任务1调至前台
bg %2 # 将任务2在后台继续运行
五、终止进程
1. Ctrl + C:中断前台进程
2. kill:终止指定进程
常用选项:
| 选项 | 说明 |
|---|---|
kill PID | 正常终止 |
kill -9 PID | 强制终止 |
示例:
kill 1234 # 终止 PID 为 1234 的进程
kill -9 1234 # 强制终止
3. killall:按进程名终止
示例:
killall vim # 终止所有 vim 进程
4. pkill:按属性终止进程
示例:
pkill -u root # 终止所有 root 用户的进程
六、计划任务管理
1. at:一次性任务
示例:
at 16:30 2025-08-20
at> echo "任务完成" > /tmp/log.txt
at> <Ctrl+D> # 提交任务
2. cron:周期性任务
编辑任务:
crontab -e
时间格式:
分钟 小时 日 月 周 命令
示例:
30 2 * * * /usr/bin/backup.sh # 每天凌晨2:30执行备份
常用命令:
| 命令 | 说明 |
|---|---|
crontab -l | 查看当前用户的计划任务 |
crontab -r | 删除所有计划任务 |
七、总结与常用命令速查
| 命令 | 功能 | 示例 |
|---|---|---|
ps -aux | 查看所有进程 | ps -aux | grep nginx |
top | 动态查看进程与资源 | top |
pgrep | 按条件查进程 | pgrep -u root |
pstree | 树形显示进程 | pstree -p |
jobs | 查看后台任务 | jobs -l |
fg/bg | 前后台切换 | fg %1 |
kill | 终止进程 | kill -9 1234 |
crontab -e | 编辑计划任务 | crontab -e |
如果有新的想法,欢迎随时和我讨论!
总结
通过本章的学习,您将能够清晰地洞察系统内部的工作状态,精准地控制每一个运行中的任务,并建立起自动化运维的初步思维,为成为一名合格的Linux系统管理者奠定坚实的基础。
1357

被折叠的 条评论
为什么被折叠?



