实验9 linux进程管理与系统监视

  • 格式:doc
  • 大小:361.50 KB
  • 文档页数:10

下载文档原格式

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

广东技术师范学院实验报告

学院:广东技术师范学院专业:软件工程班级:09软件成绩:

姓名:学号:组别:组员:

实验地点:工业中心204 实验日期:2011.10.27 指导教师签名:

实验9项目名称:进程管理

1、实验目的

理解进程管理的基本原理方法,掌握在Linux系统中查看进程状态、控制进程以及调整进程优先级等基本方法。

2、实验内容

2.1 进程管理的基本概念

什么是进程管理?要理解这个概念,就必须理解什么是进程。进程是在《操作系统原理》课程中的一个核心概念。进程(Process)是程序的一个执行过程。进程需要占用各种系统资源,包括CPU、内存等,需要读写各类文件,调用各种系统功能。自然,从进程的创建到撤销,操作系统会为它安排一切。不过,操作系统的安排是根据固定的算法所进行,纵使这些算法能根据当前情况不断调整,但不可能预先知道你的需要,然后让某个进程在特定某个时间挂起,让某个进程的优先级升高等等。因此,进程管理是指根据当前实际需求,对进程加以特定的控制。

作为一个管理员,定时查看当前系统中各个进程的具体状态,捕捉各种进程运行的异常,合理分配各类资源,特别是CPU资源给不同的进程,对各类进程有计划地控制等等,都属于进程管理的内容。系统为管理员提供了一系列的工具和命令,以让管理员完成管理工作。

2.2进程管理的基本方法

2.2.1查看进程状态

获知进程状态是进程管理的第一步。UNIX系统为进程留了许多接口、命令和工具。最典型的是/proc 文件系统。这是一个特殊的文件系统。在此文件系统中,每个目录对应于一个进程,目录的名称即为进程的PID号。进入某个进程对应的目录,里面有若干文件,这些文件记录了该进程当前运行的各种相关状态信息。应用程序可通过对这些文件打开并读取(部分甚至还能通过写文件控制进程)来获取进程信息。

例子:查看/proc文件系统

#cd /proc/

#ls

0 12294 16392 213144 28686 376918 53274 688280 864256

1 1245238 163974 217238 295118 381008 561308 69666 876674

……

#cd 1

#ls

#cred lwp psinfo sigact status

对于管理员,更常用的方法是利用ps命令来获知进程的基本状态。请参考以下例子并完成问题。

功能:列出当前活动进程的状态

格式:ps [选项] [参数]

选项:如果不使用任何选项,则列表显示当前工作站的活动进程,并且仅显示部分字段的内容。由于关于ps的选项很多,没必要全部列出并记忆,更常用的做法是记住一些有特定功能的选项组合。常用的选项含义如下:

-f:生成一个长列表(部分字段仍然省略了,但比不加该选项的要多)

-l(list):显示进程的全部列表字段信息

-e:显示除内核进程外的全部进程

-a:显示用户的全部进程

-u(user):显示特定用户的进程,

-k(kernel):显示内核进程

ps命令的一些常见的选项组合示例如下:

(1)仅显示当前工作站的活动进程

# ps

PID TTY TIME CMD

270396 pts/9 0:00 ps

725186 pts/9 0:00 –bash

(2)显示系统中除内核外的所有进程

# ps -e -f

UID PID PPID C STIME TTY TIME CMD

root 1 0 0 Aug 24 - 0:02 /etc/init

……

Zianed 1343542 741620 0 19:29:52 - 0:00 sshd: Zianed@pts/1

(3)显示关于特定用户的进程

# ps -lu user

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD

40001 A 85287 421918 905408 0 60 20 1d966400 1012 - 0:00 sshd 240001 A 85287 503876 421918 0 60 20 3b49400 1168 f1000600021e1478 pts/7 0:00 bash

(4)显示系统内核的进程

# ps -k

PID TTY TIME CMD

0 - 0:29 swapper

8196 - 2395:12 wait

12294 - 0:00 sched

(5)查看各个进程占用CPU的情况

USER PID %CPU %MEM SZ RSS TTY STA T STIME TIME COMMAND

root 8196 12.1 0.0 384 384 - A Aug 24 3630:51 wait

……

上述每个例子返回结果都是以列表形式出现,列表中主要字段的含义如下,

●PID:进程标识号

●PPID:进程的父进程标识号

●UID:进程所属的用户ID

●TTY:进程所属的终端号

●TIME:进程的执行时间总和

●CMD(command):进程的命令名

●STIME:进程的启动时间

●PRI(priority):进程的优先级,数字越大优先级越低

●NI(nice):进程的谦让度

●S(status):进程的状态,对于一般进程主要状态有:A(活动的)、T(已停止)、Z(已取消)等。对于内核

进程主要状态有:R(正在运行)、S(休眠)、T(已停止)、Z(已取消)等。

2.2.2控制作业的基本操作

除对进程进行控制外,作业(job)是另一个与进程控制密切相关的概念。简单来说,作业是用户向系统提交的一个任务请求,系统根据请求创建相应的进程完成该任务。用户每输入的一个shell命令其实都是一个作业,这个作业经解释后对应于一个到多个进程加以执行。

作业可以在前台执行,这是用户可以跟作业进行交互。当用户并不需要与作业交互,则作业也可以在后台执行。如果用户想作业启动之初就让其在后台运行,就需要在关于该作业的shell命令结尾加上“&”。作业执行时有作业号,用户可根据作业号对作业进行相应的控制,最基本的控制是将作业在终端的前后台之间切换。

命令:jobs

功能:查看当前用户的作业情况

格式:jobs

命令:bg

功能:将前台作业切换到后台执行

格式:bg 作业号

命令:fg

功能:将后台作业切换到前台执行

例子:作业控制的基本命令。

# vi jobtest &

[1] 1110094

# jobs -l

[1]+ 1110094 Stopped vi jobtest

#fg 1 将作业1调出调到前台,按ctrl+z可将其切换到后台

vi jobtest

~