实验四 进程管理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四

实验名称:进程管理

实验目的:

熟悉shell的基本操作;

掌握查看系统中的进程;

掌握判断服务器健康状态;

掌握杀死进程;

掌握如何启动前、后台进程。

实验类型:验证

实验学时:2学时

实验仪器设备:PC机、Linux操作系统软件。

实验内容及步骤:

一、查看系统中所有进程

1.ps

是Linux中最基础的浏览系统中的进程的命令。能列出系统中运行的进程,包括进程号、命令、CPU使用量、内存使用量等。下述选项可以得到更多有用的消息。

如果一个进程永远都是以后台方式启动,并且不能受到Shell退出影响而退出,一个正统的做法是将其创建为守护进程(daemon)。守护进程值得是系统长期运行的后台进程,类似Windows服务。守护进程信息通过ps –a无法查看到,需要用到–x参数,当使用这条命令的时候,往往还附上-j参数以查看作业控制信息,其中TPGID一栏为-1就是守护进程。语法:ps [选项]

选项:

-a:显示所有用户的进程清单。

-f:产生某个进程的一个完整信息清单。

-u:显示进程拥有者、进程启动时间等更详细的信息。

-x:显示不是由终端提供的进程信息。

-e: 显示所有进程,包括没有控制终端的进程

-r:只显示正在运行的进程。

-m:显示线程信息。

-w:宽行显示进程信息。

-l:用长格式显示进程信息。

-t:只显示由终端/dev/tty提交的进程。

最常用的两个:

$ps aux #UNIX格式,选项前不用加“-”,a所有前台进程,x所有后台进程,u显示由哪个用户产生的进程

$ps –le #Linux标准格式,l更加详细,e所有进程

$ps –Al

运行该命令后,得到当前系统的进程信息,根据这些信息。

●F:表示进程的标志;

●UID:表示进程拥有者的ID号;

●PPID:表示进程的父进程ID号,其中初始化程序init父进程ID号为0;

●PRI:时间片的长度;

●NI:进程的优先级;

●WCHAN:进程中处于睡眠状态的内核函数名称。

ps命令虽然简单,但是输出结果复杂,每一行代表一个进程。

2. pstree

linux中,每一个进程都是由其父进程创建的。此命令以可视化方式显示进程,通过显示进程的树状图来展示进程间关系。如果指定了pid了,那么树的根是该pid,不然将会是init(pid:1)。

语法:pstree [选项]

选项:

-p:显示进程PID

-u:显示进程的所属用户

二、判断服务器健康状态

1.top

性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似windows的任务管理器。

语法:top [选项]

选项:

-d 秒数:指定top命令每隔几秒更新。默认3秒。

?或h:显示交互模式的帮助。

P:以CPU使用率排序,默认此项。

M:以内存使用排序。

N:以PID排序。

q:退出top。

主要从输出结果的前5行判断:

2. nice

语法:nice [优先值] [进程名] # 通过给定的优先值启动一个程序

内核根据进程的nice值决定进程需要多少处理器时间,进程优先级值的范围从-20到19。值越低,优先级越高。降低优先级可以直接用"nice -niceNum 命令"这种格式;提升优先级用"nice --niceNum 命令"的格式,如果为负数则需要root权限。

通过nice命令的帮助,用户可以设置和改变进程的优先级。提高一个进程的优先级,内核会分配更多CPU时间片给这个进程。默认情况下,进程以0的优先级启动。进程优先级可以通过top命令显示的NI(nice value)列查看。

上述命令例子中,可以看到top命令获得了-3的优先值。

3. renice

renice命令类似nice命令。使用这个命令可以改变正在运行的进程优先值。注意,用户只能改变属于他们自己的进程的优先值。

renice -n -p # 改变指定进程的优先值

初始优先值为0的3806号进程优先值已经变成了4.

renice -u -g # 通过指定用户和组来改变进程优先值

上述例子中,用户为mint的所有进程优先值变为-3。

三、终止进程

1. kill

在windows下面,我们要结束一个进程,最简单的方式就是关闭这个程序,相应的进程也会随之结束,遇到不能关闭的情况,会打开任务管理器结束掉。那么在Linux下如何做呢?我们可以使用kill命令来终止进程,向Linux系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。

为什么要杀死进程?

* 该进程占用了过多的CPU时间

* 该进程锁住了一个终端,使其他前台进程无法运行

* 运行时间过长,但没有预期效果

* 产生了过多到屏幕或磁盘文件的输出

* 无法正常退出

如果你使用kill,你需要知道进程ID号。killall和pkill是类似的命令,但使用模式匹配,如进程名,进程拥有者等。

#kill –l #查看可用的进程信号

例如:

#kill -1 22154

#kill -9 22368

2.killall [选项] [信号] 进程名按照进程名杀死进程

选项:

-i:交互式

-I:忽略大小写

相关文档
最新文档