视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
操作系统管理Linux 系统进程实验报告
2025-10-02 13:58:35 责编:小OO
文档
操作系统实验报告

题目:管理Linux 系统进程   姓名:   日期:

实验目的

1) 回顾系统进程的概念,加深对Linux / UNIX 进程管理的理解。

2) 回顾ps 命令和选项。

3) 列出当前shell 中的进程。

4) 列出运行在系统中的所有进程。

5) 根据命令名搜索特定的进程。

6) 确定一个进程,终止它。

7) 使用kill 命令终止进程。

8) 根据用户查找和终止进程。

9) 根据命令名终止进程。

实验环境

一台运行Red Hat Linux 操作系统的计算机。

实验内容与步骤

注:本报告中蓝色字表示填空的内容,红色字表示仍然在纠结。

步骤 1:登录进入GNOME。

在 Linux 登录框中填写指导老师分配的用户名和口令,登录Linux 系统。

步骤 2:访问命令行。

单击红帽子,在“GNOME 帮助”菜单中单击“系统工具”-“终端”命令,打开“终

端”窗口。

步骤3:回顾系统进程概念。

每个运行的程序都会创建一个进程,进程分配到一个唯一的进程标识符 (PID) 。PID

被系统用于标识和跟踪进程,直到进程结束。操作系统内核管理所有进程的初始化和终止。

每一个进程都要求系统资源 (例如CPU 时间和RAM空间) 在其中工作。当进程启动的时候,

操作系统把系统资源分配给每个进程,当进程终止的时候,系统回收这些资源。在Linux 系

统启动的时候,首先启动的两个进程是sched (调度) 和init (初始化) ,它们管理着其他进程。

Linux 系统中有几种不同类型的进程:

守护进程:由 Linux 内核启动的进程,为了特定目的而存在。例如,lpsched 守护进程

存在只是为了处理打印作业。

父进程:派生其他进程的进程是父进程。一个叫做init 的守护进程是第一个调用的进程。

每一个进程,除了init 之外,都有一个父进程。

子进程:由其他进程派生出来的进程叫做子进程。

孤儿进程:在进程返回输出之前,它的父进程结束了,这样的进程叫做孤儿进程。

僵进程:子进程没有带着输出返回给父进程。这样的进程在系统中变成丢失的进程。

使用此前的信息,完成以下填空:

1) Linux 系统中,几乎每一个启动的进程,都会由内核分配一个唯一的PID

进程标识符,用于跟踪从进程启动到进程结束。

2) 当启动新进程的时候,内核也给它们分配系统资源,如CPU时间和RAM空间。

3) 永远不向父进程返回输出的进程叫做僵进程。

4) 由父进程派生出来的进程叫做子进程。

5) 父进程是一个派生另一个进程的进程。

6) 运行用于提供服务的Linux 系统进程是守护进程。

7) 如果父进程在子进程之前结束,它创建了一个孤儿进程。

步骤 4:回顾ps 命令和信息。

ps 命令用于列出当前系统中运行的进程。

如果一个进程耗时太长,或者看上去好像已经终止了,表现为一个终端窗口不再响应或

挂起,通常需要使用ps 查看系统中的进程。通过列出进程,可以查看初始化进程的命令或

程序的名字,以及所有它派生出来的子进程。通过多次执行ps 命令,查看进程的时间——

进程占用的CPU 时间,可以检查一个进程是否还在运行。如果时间小再增长,那么进程可

能已经终止了。如果进程占用太长的时间或者已经停止,可以使用ps 命令检查进程的进程

ID (PID) ,然后杀死进程。

ps 命令的输出将显示PID 号和与其相关的命令或程序。PID 号通常用于终止一个进程。

ps 命令 ( ps [-options] ) 的3 个主要选项如下表所示。

表 3-5 ps 命令选项

ps 选项 意义 功能

Ps 无选项显示当前 shell 或终端窗口中,当前用户的进程信息

ps –e 每一个显示系统中每一个进程的信息

ps –f 完全产生一个完全列表,给出每个进程的所有可用信息

ps -u userid 用户显示特定用户的所有进程

基本的ps 命令显示在当前shell 中的进程信息,用户只能够查看在这个终端窗口中初始

化的进程。输入ps 命令,将结果填入表3-6 中。

表 3-6 实验记录

PIDTTYTIMECMD
14439pts/100:00:00bash
14456pts/100:00:00Ps

从当前终端窗口中,练习使用给出的每个选项的 ps 命令。

输入 ps -f 命令,显示运行在系统中的某个进程的完全信息,填入表3-7 中。

UIDPIDPPIDCSTIMETTYTIMECMD
root1443914436019:03pts/100:00:00bash
root1445714439019:04pts/100:00:00ps -f
步骤 5:列出系统中运行的所有进程。

输入 ps -ef 命令,显示运行在系统中的各个进程的完全信息。执行该命令,并与ps –f

命令的输出结果对照,一致吗?有何不同?

不一致,1)ps  -ef 的进程很多____2)ps  -ef 的CMD很多,但两者的bash很相似

3)最后一个CMD一个是ps  -f,一个是ps -ef

注意分析当前终端窗口中的输出结果:

a. 显示了多少个进程?

____见截图________________________________________________________________

b. 进程ID 的PID 是什么?

___进程标识符______________________________________________________

c. 启动进程的命令 (CMD) 是什么?

___ps_________________________________________________________________

d. 请观察,什么命令的PID 号是1?

___init[5]________________________________________________________________

e. 再次运行ps –ef 命令,计算进程的数目:

___115_________________________________________________________________

然后执行下列命令把输出结果输入到wc 命令中:

ps -ef | wc -l

第一个数字显示的是行的数目,也是进程的数目:

___117_________________________________________________________________

执行 man ps 命令,可以打开Linux 用户命令手册,了解ps 命令的用法,输入wq 命令

可退出用户手册的阅读。man 命令可以执行吗?结果如何?

不可以,见截图____________________________________________________

步骤6:根据命令名搜索特定的进程。

为了终止一个进程,必须找到该进程的PID。大多数运行的系统中,有上百个进程在运

行,ps -ef 的列表可能很长。如果知道启动进程的执行程序的名字,可以更快地找到PID。

通过把 ps 命令的输出结果输入到grep 中,可以搜索想要终止的特定进程,确定正确的

PID。

grep 命令可以在其他命令的输出中搜索所有类型的特征字符串。-l (长的输出) 选项将

显示和找到的PID 相关的进程的名字;-e 选项显示PID 和初始化命令的名字。

a. 单击红帽子,在“GNOME 帮助”菜单中单击“游戏”-“堆麻将”命令,打开“堆

麻将”游戏。(在这个步骤时没有认出哪个是堆麻将游戏,故而用游戏lagno代替)

b. 在当前的终端窗口中,执行命令:

ps –e | grep mahjongg

(“堆麻将”游戏的进程名是“mahjongg”) ,查找和“堆麻将”游戏调度守护进程相关的

所有进程。

c. 显示了多少个相关进程?

显示了2个,见截图

d. 显示进程中最小的进程ID 号是多少?

___15015_________________________________________________________________

c. 在当前终端窗口中执行命令:

pgrep –l mahjongg

查找所有和“堆麻将”游戏调度守护进程相关的进程。ps 和pgrep 命令输出之间有什么不同?

ps除了显示PID和CMD以外,还显示了TIME和TTY

步骤7:确定一个要终止的进程。

当试图终止一个程序,或者释放一个挂起的终端窗口的时候,杀死和不响应的应用相关

的PID 可能还是不够的,一般需要杀死那个进程的父进程,在少数情况下,甚至要杀死父

进程的父进程。为了沿着层次结构,从子进程追溯到派生它们的父进程,必须能够查找PID

和PPID。

必须首先确定最低级不响应进程的 PID。通常,可以试着去杀死那个进程。如果这样做

不能够停止那个进程,可能需要杀死它的父进程。杀死父进程将杀死所有它派生的子进程。

杀死一个父进程也比杀死几个子进程快得多。

1)在GNOME 当前终端窗口中,输入ps 命令。

有多少进程正在运行?为什么只有这么少的进程?

2个,因为Ps 无选项显示当前 shell 或终端窗口中,当前用户的进程信息

2) 正在运行的进程的名字是什么?它表示什么?

bash和ps_________________________________________________________________

3) 这个进程的PID 是多少?

___14439和17368___________________________________________________

4) 在bash shell 中输入命令csh,打开一个C shell 会话,当前系统的会话提示符是什么?

___$_______________________________________________________________

5) 输入 ps -f 命令,显示在当前shell 中运行的进程的所有信息。现在什么进程正在运

行?

____bash  -sh   ps –f ________________________________________________________

6) bash 的PID 是-sh (csh) 的PPID 吗?

_____是_______________________________________________________________

7) 输入命令sleep l000&,创建一个进程,把执行挂起1000 秒 (大约15 分钟) 。&表示

在后台运行命令,返回shell 提示符,这样您可以继续工作。

8) 再次输入ps -f 命令。-sh (csh) 的PID是sleep 命令的PPID吗?哪个PID是csh (C shell)

的子进程?

_是_____25061和25062 

9) 输入命令 kill -9  退出C shell。然后再次键入ps -f 命令。什么PID 是

sleep 父命令的PPID?

____14439________________________________________________________________

sleep 进程现在是什么类型的进程?

_____pts/1_______________________________________________________________

步骤8:使用kill 命令终止一个进程。

信号用于终止、挂起和继续进程。有时候使用Ctrl + c 可以终止一个不响应的进程。这

样向进程发送一个中断 (INT) 信号,终止它及所有它派生的子进程。

kill 命令提供了一个终止不想要的命令进程的直接方法。当想停止一个运行了很长时间

的命令的时候,或者当需要终止一个不能够正常退出的进程的时候,它很有用。指定PID

正常地杀死一个进程。

kill [-signal] process -id

为了使用kill 命令终止一个进程,应该首先键入ps 找出进程的PID,然后键入kill 紧跟

着PID。如果使用kill 而没有指定信号,则信号15 (SIGTERM) 将被发送给特定PID 号的进

程。这叫做软杀死,通常终止了进程。如果可能,最好软杀死进程,这样它可以正确地关闭

文件,温和地终止进程。

如果需要强制终止一个进程,可以使用带 -9 选项的kill 命令。这个选项叫做强制杀死,

当shell 对所有其他终止信号都不响应的时候,需要使用它来杀死shell。

kill -9 process -id

注意:对于shell 之外的进程,把kill –9 (SIGKILL) 作为最后的选项,因为它是一种生

硬的方法,不允许正确的进程终止。

a. 输入命令ps –f ,显示在当前shell 中运行的进程的完整信息。现在什么进程正在运

行?

____图________________________________________________________________

b. 因为sleep 进程现在是一个孤儿进程,已经被init 进程 (PID #l) 收养,输入命令,对

sleep 的PID 执行软杀死。如果sleep 已经终止 (超过15 分钟) ,则重复步骤7 中的8) 、9)

操作,然后软杀死sleep 程序。再次输入ps -f 命令。现在什么进程正在运行?

____图________________________________________________________________

步骤9:按照用户查找和终止一个进程。

ps 命令可以带 -u (用户) 选项使用,查找指定用户的进程。这个命令比ps-ef 使用得更

多,因为一般只能够管理属于自己的进程。我们可以通过用户登录名或者UID 号来查找用

户的进程。用户只能够终止自己的进程,但是超级用户可以终止系统中所有运行的进程。

ps –u login-ID 或UID

1) 启动计算器和“堆麻将”游戏GNOME 应用程序。

2) 使用带 -u 选项的ps 命令,查找以登录ID (例如,userX) 或者数字UID (例如,1004)

运行的所有进程。计算器应用程序的PID 是什么?

___25152____图_____________________________________________________________

3) 使用软杀死终止计算器应用程序,“堆麻将”是否仍然在桌面上运行?

___是_______图__________________________________________________________

4) 使用ps -e 命令组合grep,查找“堆麻将”程序的PID 号,而不是使用ps -u 查找整

个列表。您使用什么命令?

提示:猜猜“堆麻将”程序的命令名中可能有哪个字母,使用 grep 搜索那些字母。

___ps –e|grep kmah _______图________________________________

5) 终止“堆麻将”程序。它是否还在桌面上运行?

____不在________________________________________________________________

6) 退出 C shell。

步骤 10:删除所有在本实验中创建的文件和目录。

步骤 11:关闭终端窗口,注销。

遇到的问题

1.步骤4中发现每次输入ps命令输出的进程PID都不一样。

解决方法:查询百度得知:即使程序相同,启动的时间不同或者操作系统中已经启动程序的数量不同,这个PID号码也就不同。也就是说这个PID号码是自动生成的

2.步骤4中第一次输入ps –f命令时输出的是command not found。

解决方法:仔细观察发现ps与-f之间有空格,第一次输入时没有输空格。

3.步骤5中输入命令ps –ef | wc –l时结果显示wc无效选项。

解决方法:观察发现把l误输为1,l的意思为line行数。

4.步骤5中运行ps –ef输出的进程数和运行ps –ef | wc –l直接显示出的进程数不同,一个为115,一个为117,为什么?

解决方法:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。wc –l统计输出的行数,即是符合条件的用户数。(这是百度搜到的结果,但是对于这个问题仍然很困惑。)

5.步骤六中直接输入ps –e | grep lagno 没有用。

解决方法:先通过ps –ef显示lagno的进程名iagno再使用命令ps –e | grep iagno。

实验感受

本次实验让我对Linux操作系统有了进一步的认识,也了解到在终端执行ps命令的好处,对进程也有了一些比书本上更具体化的概念。

在实验中留下最深刻印象的发现是,软件卡壳的时候,在Linux操作系统中用kill命令即可结束相关进程;而且关闭一个进程也可以不依赖鼠标,在键盘上输入命令也可以完成目标操作。

在实验的过程中多次出现了因为观察不仔细导致输入错误的情况,说明对于命令的理解并不深入,不知道其代表的意义,只是照着实验手册上的提示输入,以后一定会多注意,先理解手册上的命令再进行操作。下载本文

显示全文
专题