注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

wangyufeng的博客

祝愿BB 健康开心快乐每一天

 
 
 

日志

 
 

UNIX:进程管理实验教程  

2013-05-23 15:13:36|  分类: Linux学习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一.实验目的
1.加深对进程概念的理解,尤其是进程的动态性,并发性。
2.了解进程如何被创建和终止。
3.查看进程管理命令。
4.使用进程管理命令。
5.在后台运行进程。
二.实验内容
1.观察进程状态。
2.建立后台进程。
3.控制作业运行。
4.控制进程活动。
三.实验步骤
1.观察进程状态
SCO UNIX允许你观察你的进程的状态。如果你想查看系统上所有进程的状态,那麽,你必须得到相应的权限。
〈1〉在键盘上输入命令:
$ ps
你会见到如下所示的输出信息:
PID TTY TIME CMD
587 ttyp0 00:00:00 sh
610 ttyp0 00:00:00 ps
其中:
PID—表示进程的标识号(ID)。
TTY—表示该进程所在的控制终端。
TIME—表示该进程累计执行的时间,即占用CPU的时间,以小时:分:秒表示。
CMD—表示该进程所对应的命令。
〈2〉输入 ps -e命令,可以显示系统中运行的所有进程,包括系统进程和用户进程。你会看到:进程数目一下子多了许多。这是由于系统中存在许多系统进程。系统进程也称做 守护进程,它们不与某台终端或某个用户相关联。它们不是由用户命令建立的进程,而是由系统创建的进程,专门用于执行系统管理和各种服务等功能。
〈3〉输入 ps -f命令,可以得到有关你的进程的更详细的信息。
〈4〉输入 ps -l命令,你会得到进程附加属性的长列表信息。
〈5〉输入 ps -el命令,你会得到所有进程的附加属性长列表信息。
2.进程控制。
在UNIX系统中,除了提供进程控制的命令以外,UNIX shell还提供让你控制进程如何运行的方法。
〈1〉后台进程
你的终端shell进程是你执行的大多数命令的父进程。通常情况下,在系统提示你输入下面的命令之前,它要等待其子进程的终止。你可以让shell不必等 待子进程,而是继续接受另外的命令,其方法就是在后台运行进程。为了再后台运行一个命令,在该命令行的末尾要加上一个&字符,于是shell就立 即返回一个提示符($)。
请输入以下命令:
$ ksh
$ cc f1.c f2.c f3.c -o prog&
[1]586
$
其中,[1]表示作业号,586是后台进程的PID号。
〈2〉作业控制
Korn shell(ksh)超过其它shell的一个特性就是为你提供了更强的控制进程的能力。这种作业控制特性允许你挂起正在运行的进程,可以把进程从后台移到前台或者反过来—从前台移到后台。Korn shell支持一个特殊的字符(〈Ctrl〉z),它可以将当前正在运行的子进程挂起,并且告诉shell不用等待子进程终止。当一个子进程被挂起时,屏幕上就显示出该子进程的作业号和命令名,形式如下所示:
[1] + Stopped command
其中,command表示被挂起进程所对应的命令。
例如,你当前正在运行命令:
$ man ls | more
在没有全部显示完之前,按下〈Ctrl〉z键,你在屏幕上会看到:
[1] + Stopped man ls | more
一旦你挂起一个进程,你就可以用bg命令在后台运行这个进程:
$ bg [job_ID...]
其中,jod_ID是被挂起进程的PID或者前面带有“%”的作业号。例如:
$ bg %1
用fg命令,你可以把一个在后台运行的进程调度到前台运行:
$ fg [job_ID...]
例如:$ fg %1
jobs命令可以让你看到正在运行的所有子进程的状态:
$ jobs [job_ID]
例如:
$ jobs
你可以使用sleep命令让当前进程睡眠若干秒,该秒数由参数指定。
3.发送信号
信号是随时可以中断一个进程并让它立即采取行动的事件。SCO UNIX操作系统支持许多不同类型的信号,其中大多数都是用来终止进程。有时,一个进程运行的指令使得该进程阻塞住了,无法正常地退出。这样的进程就称做被挂起。
〈1〉信号
挂起信号(信号1):当你退出系统时,操作系统就发送hangup(挂起)信号给shell的各子进程。
中断信号(信号2):〈Del〉键通常被配置为发送中断信号,它终止当前进程。
退出信号(信号3):〈Ctrl〉\组合键向进程发送quit(退出)信号,通常它导致进程的终止。
〈2〉nohup命令
如果你想在后台运行一个很长的进程,并且在你退出系统时也不终止该进程,你就可以使用nohup命令来保护该进程。nohup的格式是:
nohup command [arguments...]&
其中,command表示你要保护的进程所对应的命令,arguments表示该命令的参数。如果尚未发生输出重定向,则nohup命令将指定命令的输出重定向到文件nohup.out。
〈3〉kill命令
有些信号并不能利用按键很容易地完成。为了发送这些信号,你可以使用kill命令:
kill [-signai] pid [pid...]
其中,signal表示要发送的信号,pid表示接受信号的进程的PID。
4.减轻系统负载
UNIX提供了一些命令能够使系统运行的效率更高,其方法是把进程的负载分散到更长的时间段内。这里介绍两个常用命令:一个影响进程的优先值,另一个可以延迟命令的执行时间。
〈1〉nice命令
每一个进程都有一个优先值,核心用来给进程分派CPU的时间。优先值是根据进程自上一次占用CPU到现在过了多少时间以及nice值来确定,nice值是 0到39之间的数。nice值越高,命令的优先级就越低。核心进行进程调度时,总是先调度优先级高的就绪进程。反过来,一个就绪进程的优先级低,它就被排 在后面得到CPU。
nice命令用于增加指定命令的nice值。其使用格式是:
nice [-n increment] command [arguments...]
其中,increament是要增加的数值,command是nice命令所要作用的命令,arguments是command命令所用的参数。
〈2〉at命令
SCO UNIX提供了一个命令,它可以让另外的命令在指定的时间运行。at命令从stdin(标准输入)中读取输入。如果stdin对应你的键盘,那麽,在结束命令时要按〈Ctrl〉d,用来表明输入结束。at命令的格式是:
at [options] time [date]
其中,options是选项,time和date表示时间和日期。
5.进程综合实验
使用ps命令监控SCO UNIX命令生成的进程。
〈1〉首先确保你是在自己的的主目录下工作。为此,输入命令:$ cd
〈2〉运行C shell程序—输入命令csh。然后,运行Bourne shell—输入命令sh。
〈3〉运行ps-l命令。
〈4〉输入命令exit,从上述shell中退出。
〈5〉运行命令ps-f。
〈6〉输入命令scosh,运行scosh程序。由主菜单中输入以下命令:
! ps -f
〈7〉按〈Enter〉qy或〈F2〉,退出scosh。
〈8〉运行以下命令:
find/-name*-print>/dev/null 2>&1&
〈9〉输入exit命令,试着退出系统。
〈10〉再次输入命令exit,然后重新注册进入系统。
〈11〉输入以下命令:
nohup find/&
〈12〉输入exit命令,再次退出系统;然后重新注册进入系统。运行ps命令。
〈13〉输入cat nohup.out命令。
〈14〉输入命令vi atcmd,调用vi编辑程序,建立新文件atcmd。
〈15〉运行以下命令:
at now+1 minute<atcmd
〈16〉在1分钟后,查看名为results的文件。使用以下命令:
cat results
〈17〉重新编辑atcmd文件,从中删除文件重定向操作。然后,重新运行第15步所示的at命令。
〈18〉使用kill命令杀掉你的shell进程。
〈19〉试着用另外的信号杀掉进程。

以上内容来自:
http://course.cug.edu.cn/cug/OS2.0a/practice/practice.htm

  评论这张
 
阅读(537)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017