# 实验6 进程管理实验报告 ## 一、实验目的和要求 - 练习Linux进程管理命令 - 了解如何监视系统运行状态 - 掌握查看、删除进程的正确方法 - 掌握命令在后台运行的用法 - 掌握进程手工、调度启动的方法 ## 二、实验环境 - 硬件:PC机 - 软件:Ubuntu操作系统、虚拟机 ## 三、实验步骤及结果 ### 1. 查看系统状态 - **命令**:`top` - **操作**:进入系统,执行`top`命令察看当前系统的状态。 - **截图**:[此处插入top命令执行结果的截图] - **解释说明**:top命令显示了系统的整体运行状态,包括CPU使用率、内存使用率、进程列表等。通过该命令可以识别各进程的有关说明信息。 ### 2. 查看系统当前进程 - **命令**:`ps aux > process` 和 `cat process` - **操作**: - 执行`ps aux > process`命令,将系统当前的进程保存到文件`process`中。 - 执行`cat process`命令查看`process`文件内容。 - **截图**:[此处插入process文件内容的截图] - **解释说明**:`ps aux`命令列出了所有进程的详细信息,包括进程ID、用户、CPU使用率、内存使用率等。 ### 3. 查看当前进程树 - **命令**:`pstree` - **操作**:执行`pstree`命令查看当前进程树。 - **截图**:[此处插入pstree命令执行结果的截图] - **解释说明**:`pstree`命令以树状结构显示了进程之间的父子关系。 ### 4. 查看init进程 - **问题**:查看系统当前有没有init进程?什么是init进程? - **操作**: - 通过`ps aux`或`pstree`命令查找init进程。 - **截图**:[此处插入查找init进程结果的截图] - **解释说明**:init进程是Linux系统启动后的第一个进程,负责启动其他系统服务和进程。在较新的系统中,init可能被systemd等替代。 ### 5. 找出bash进程的父进程 - **命令**:`ps -ef | grep bash` 和 `pstree`(辅助查看) - **操作**: - 执行`ps -ef | grep bash`命令查找bash进程及其父进程。 - 可选:使用`pstree`命令辅助查看bash进程在进程树中的位置。 - **截图**:[此处插入查找bash进程及其父进程结果的截图] - **解释说明**:通过命令可以找到bash进程的PID及其父进程的PID。 ### 6. 杀死bash进程 - **命令**:`kill PID`(其中PID为bash进程的ID) - **操作**: - 执行`kill PID`命令杀死bash进程。 - **截图**:[此处插入杀死bash进程前后的对比截图,如终端状态变化] - **解释说明**:杀死bash进程后,当前终端会话将终止,因为bash是终端的shell进程。 ### 7. 输入“cat <回车>”并按Ctrl+z、Ctrl+c - **操作**: - 输入`cat`命令后按回车。 - 按`Ctrl+z`键挂起cat进程。 - 输入`fg`命令尝试将cat进程恢复到前台。 - 按`Ctrl+c`键终止cat进程。 - **截图**:[此处插入相关操作的截图] - **解释说明**: - `Ctrl+z`将进程挂起到后台。 - `fg`命令将后台进程恢复到前台。 - `Ctrl+c`终止前台进程。 ### 8. 查找并杀死find进程 - **命令**:`find / -name ls* > temp &` 和 `killall find` - **操作**: - 执行`find / -name ls* > temp &`命令在后台查找名为ls*的文件,并将结果重定向到temp文件。 - 执行`killall find`命令杀死所有find进程。 - **截图**:[此处插入相关操作的截图,包括find进程查找和杀死前后的对比] - **解释说明**:通过后台运行find命令可以避免阻塞终端,使用`killall`可以方便地杀死所有同名进程。 ### 9. 运行睡眠和vi进程 - **操作**: - 在前台运行2个睡眠进程(sleep),并挂起。 - 在前台运行1个vi进程,并挂起。 - 在后台运行1个睡眠进程。 - **截图**:[此处插入相关操作的截图] - **解释说明**:展示了如何在前台和后台运行进程,并挂起进程。 ### 10. 列出和调度作业 - **命令**:`jobs`、`bg`、`fg`、`kill` - **操作**: - 执行`jobs`命令列出所有正在运行的作业。 - 使用`bg`命令将第二默认作业在后台继续运行。 - 使用`fg`命令将1号作业在前台继续运行。 - 使用`kill`命令杀死默认作业。 - **截图**:[此处插入相关操作的截图] - **解释说明**:展示了如何列出作业、将作业在后台或前台继续运行,以及杀死作业。 ## 四、实验总结和思考 ### 1. 在Linux中启动一个进程,可采取哪些方式? - 可以直接在终端输入命令启动进程。 - 可以通过脚本启动进程。 - 可以通过系统服务管理工具(如systemd)启动进程。 ### 2. 进程的查看和调度分别可使用什么命令?请至少列举出5种命令并加以说明。 - `ps`:查看当前进程状态。 - `top`:动态查看系统进程状态。 - `pstree`:以树状结构显示进程关系。 - `jobs`:列出当前shell会话中的作业。 - `bg`/`fg`:将作业在后台或前台继续运行。 ### 3. Linux中进程有哪些状态? - 运行(Running):进程正在CPU上执行。 - 就绪(Ready):进程已准备好执行,等待CPU资源。 - 阻塞(Blocked):进程等待某个事件(如I/O操作)完成。 - 停止(Stopped):进程被暂停执行,如通过`Ctrl+z`挂起。 - 僵尸(Zombie):进程已终止,但其进程描述符仍存在,等待父进程回收。
时间: 2025-05-31 09:46:47 浏览: 34
### Linux 进程管理及相关命令解析
在 Linux 系统中,进程管理是一项重要的任务,涉及监控、分析和调整运行中的程序。以下是关于 `ps`、`top` 和 `pstree` 命令的详细介绍,以及不同进程状态的意义。
---
#### 一、`ps` 命令详解
`ps` 是 Process Status 的缩写,用于显示当前系统中运行的进程信息。它的功能强大且灵活,支持多种参数组合。
##### 1. 参数说明
- `-a`: 显示所有用户的进程。
- `-u`: 按用户过滤进程。
- `-x`: 显示无终端的进程。
- `aux`: 组合参数,常用于全面查看系统中的所有进程及其详细信息[^4]。
- `-e`: 显示所有进程。
- `-f`: 使用全格式输出。
- `-l`: 提供更详细的长格式输出。
##### 2. 输出字段解释
| 字段 | 含义 |
|------------|----------------------------------------------------------------------|
| PID | 进程 ID |
| USER | 执行该进程的用户名 |
| %CPU | CPU 占用率 |
| %MEM | 内存占用百分比 |
| VSZ | 虚拟内存大小(KB) |
| RSS | 实际使用的物理内存大小(KB) |
| TTY | 控制终端 |
| STAT | 进程状态 |
| START | 进程启动时间 |
| TIME | 进程累计使用 CPU 的时间 |
| COMMAND | 进程名称或路径 |
##### 3. 示例代码
```bash
# 查看所有进程及其详细信息
ps aux
# 查找特定进程(如 nginx)
ps aux | grep nginx
# 显示带有 PPID 的进程树结构
ps -ef
```
---
#### 二、`top` 命令详解
`top` 是一个动态更新的交互式工具,能够实时展示系统中各个进程的资源使用情况。
##### 1. 功能特点
- 默认按 CPU 使用率降序排列。
- 支持键盘快捷键操作,例如:
- `k`: 杀死指定进程。
- `r`: 修改进程优先级。
- `M`: 按内存使用率排序。
- `P`: 按 CPU 使用率排序。
##### 2. 主要界面元素
| 元素 | 描述 |
|--------------|--------------------------------------------------------------|
| Tasks | 当前加载的任务数 |
| Cpu(s) | CPU 使用统计 |
| Mem | 物理内存使用情况 |
| Swap | 交换分区使用情况 |
| Processes | 列表形式展示的进程 |
##### 3. 示例代码
```bash
# 启动 top 工具
top
# 结束 top 并返回 shell
<按下 q 键>
```
---
#### 三、`pstree` 命令详解
`pstree` 以树状图的形式展示当前系统中的进程关系,便于理解父子进程间的层次结构。
##### 1. 参数说明
- `-p`: 显示每个进程对应的 PID。
- `-u`: 显示每个进程所属的用户。
- `-a`: 显示完整的命令行参数。
##### 2. 示例代码
```bash
# 显示带 PID 的进程树
pstree -p
# 显示带用户信息的进程树
pstree -up
```
---
#### 四、进程状态解读
根据前面的内容总结如下:
| 状态 | 英文标识 | 解释 |
|----------|----------|----------------------------------------------------------------------------------------|
| 就绪 | Ready | 进程已准备就绪,等待 CPU 分配时间片[^1]。 |
| 阻塞 | Blocked | 进程因等待外部事件(如 I/O 完成)而暂停执行,分为可中断 (`S`) 和不可中断 (`D`) 睡眠状态[^2]。 |
| 僵尸 | Zombie | 子进程已退出,但父进程尚未调用 `wait()` 系统调用来回收其资源[^1]。 |
| 死亡 | Dead | 进程已完成清理工作,不再存在于系统中。 |
---
### 总结代码示例
以下是一些综合性的实用脚本:
```bash
# 查找并杀死高 CPU 占用的进程
PID=$(ps aux --sort=-%cpu | head -n 2 | tail -n 1 | awk '{print $2}')
kill -9 $PID
# 显示当前用户的所有进程
pgrep -lu $(whoami)
# 构建进程依赖树
pstree -apu
```
---
阅读全文
相关推荐




















