实验四 进程管理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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:忽略大小写