1、邯 郸 学 院讲 稿20122013 学年 第一学期分院(系、部 ):信息工程学院教 研 室: 计算机科学与技术系课 程 名 称:计算机操作系统授 课 班 级: 2010 级计算机科学与技术专业 本科主 讲 教 师:司玲玲职 称: 讲师使 用 教 材:计算机操作系统制 作 系 统:邯 郸 学 院 制1实验一 熟悉Linux操作系统环境1、实验目的(1)学会Linux的安装,Linux虚拟机的安装和配置;(2)熟悉Linux下的基本操作,学会使用各种Shell命令去操作 Linux,对Linux有一个感性认识。2、实验预备内容(1) Linux系统的 Shell使用Linux系统时,用户多数时间
2、是通过Shell与系统进行对话的。 Shell是一个接收用户输入命令并将其转换成指令的程序,它是用户与Linux系统之间的界面之一。Linux系统中可以使用的Shell 包括:bash: Bourne Again Shell。这是Linux 系统上最常用的Shell,它合乎POSIX标准且相容于Bourne Shell,是GNU工程 (自由软件基金会 ) 的产物,并且提供了编辑命令行的功能。csh: C Shell。由Berkeley (伯克利大学) 开发,与Bourne Shell在交互式使用上很多是相兼容的,但在程序设计界面上却有很大的不同。它不提供编辑命令行的功能,但它有类似的功能叫命令
3、历史记录。ksh: Korn Shell。在UNIX系统下得到普遍使用,并最早将现代Shell技术 (包括取自C Shell的部分) 引入Bourne Shell,提供了编辑命令行功能。sh: Bourne Shell。是原始的Shell,不提供编辑命令行功能。tcsh: C Shell的加强版,提供了编辑命令行的功能。zsh: Z Shell。最新的Shell,与Bourne Shell兼容,提供编辑命令行的功能。POSIX标准:POSIX表示可移植操作系统接口 (Portable Operating System Interface,缩写为POSIX 是为了读音更像UNIX) 。电气和电子
4、工程师协会 (IEEE) 最初开发 POSIX 标准,是为了提高UNIX环境下应用程序的可移植性。然而,POSIX并不局限于UNIX。许多其它的操作系统,例如DEC OpenVMS和Microsoft Windows NT,都支持 POSIX标准,尤其是IEEE Std. 1003.1-1990 (1995 年修订) 或POSIX.1,POSIX.1 提供了源代码级别的C 语言应用编程接口 (API) 给操作系统的服务程序,例如读写文件。POSIX.1 已经被国际标准化组织 (ISO) 所接受,被命名为 ISO/IEC 9945-1:1990 标准。 (2) Linux系统的文件、目录和权限L
5、inux的文件名与DOS有许多相似之处也有其自身的特点。Linux文件名没有标准格式。通常文件名中可以包含任何字符 (“/”字符除外,“”字符不能作为文件名的第一个字符) ,文件名的长度限制在 256 个字符以内。Linux的文件名也提供了功能强大且精确的通配符。文件的权限是Linux系统安全的核心部分,包括:1) Read (可读) 权限:表示可以读取文件内的数据。2) Write (可写) 权限:表示可以改变或删除该文件。3) Execute (可执行) 权限:表示可以把该文件当成程序执行。除文件权限之外,Linux系统上还有目录和很多其他类型的文件,其中包括特殊文件 (设备) 、Sock
6、et和符号连接等等 (平时我们经常使用的Windows 设备如软驱、光驱等在 Linux中也是一种特殊的文件) 。拥有root口令的用户称为超级用户,超级用户有权访问整个系统,包括建立普通用户帐号、修改密码、安装与卸载软件等一切权限。超级用户的提示符为“#”,普通用户提示符为 “$”。几个用户在一个系统下共用一个帐号,其个人文件的安全就得不到保障。建立普通用户帐号后,系统能保证用户是唯一能够存取其个人文件的人。另一方面,即使没有与人共享一个系统,建立普通用户帐号也是必要的。因为如果总是以超级用户登录进行操作 (超级用户的权限是整个系统) ,一旦出现误操作 (如:破坏或移动、删除一个重要的系统文
7、件 ) 处理起来也很棘手。(3)Linux文件系统2Linux的文件系统是文件和目录层次的集合。了解Linux 文件系统的结构有助于更好地理解和使用Linux。/ Linux系统目录树的起点。bin 存放可执行命令,如date、ls 等。boot 存放系统启动时所需要的文件,包括引导装载程序。dev 存放所有的设备文件,如fd0 为软盘设备,cdrom 为光盘设备。etc 存放系统配置文件,如passwd、fstab文件。home 包含普通用户的个人主目录。lib 包含二进制文件所需的共享库。media 移动存储介质的挂载点目录。mnt 用于临时性挂载文件系统。proc 存放系统中有关进程的运
8、行信息,由内核在内存中产生。root 超级用户的主目录。sbin 系统管理命令,这里存放的是系统管理员使用的管理程序。tmp 公用临时文件的存放目录。var 存放系统中经常变化的文件,如系统日志文件、用户邮件等。lost+found 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件就在这里。usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。其中包含:/usr/bin 众多的应用程序/usr/sbin 超级用户的一些管理程序/usr/doc linux文档/usr/include linux下开发和编译应用程序所需要的头文件/usr/lib 常用的动态链接库和软件包的配置文
9、件/usr/man 帮助文档/usr/src 源代码,linux内核的源代码就放在/usr/src/linux里/usr/local/bin 本地增加的命令/usr/local/lib 本地增加的库3、实验内容(1)Linux操作系统和Linux虚拟机的安装(2) Shell 命令步骤 1:用 root 账号(超级用户)登录,口令为 123456(注意大小写) 。注册成功出现#号(超级用户系统提示符,普通用户的系统提示符为$) 。步骤 2:单击“应用程序”-“系统工具”-“终端” ,或桌面上已有的快捷方式,打开终端工具。1)输入“date”命令,显示系统的当前日期和时间。2)输入命令“date
10、 121700002011” ,显示新修改的系统时间为 2011 年 12 月 17 日 00:00:00,星期六。3)输入命令“cal 2011” ,屏幕上显示出 2011 年的日历。4)输入命令“cal” ,显示本月的日历。步骤 3:管理用户1)添加新用户/bin boot etc dev home lib media mnt proc root 3输入命令“useradd 用户名” ,如 “useradd aaa”,系统将按照默认值新建用户。系统将在/home 目录新建与用户同名的子目录作为该用户的主目录,并且还将新建一个与用户同名的私有组群作为该用户的主要组群。输入命令“useradd
11、 g 用户名 ”,-g 是参数,可以指定用户所属的主要组群。2)修改用户口令输入命令“passwd 用户名” ,如“passwd aaa”输入密码“123456” ,再次输入密码“123456” ,设置成功。3)删除用户输入命令“userdel r 用户名” ,如“userdel r aaa”,可以把相关的文件夹一并删除(例如 home 目录下的用户目录等) 。4)修改用户属性输入命令“usermod 参数 用户名”-d 主目录-g 组群名-l 用户名比如输入命令“usermod l tommy tom”,修改 tom 用户的名称为 tommy比如输入命令“usermod g work aaa
12、” ,将 aaa 用户从原组群改为 work 组群5)切换用户通常情况下只有在必须使用超级用户权限的时候,才以超级用户身份操作,为提高系统安全性,输入命令“su 用户名” ,如“su - aaa”切换为普通用户 aaa。如果是以普通用户登录的,需要使用超级用户的权限,也可以使用 su 命令切换到超级用户。输入“su”命令,并键入正确的密码后可以看到提示符由“$”变为“#”了,可是由于工作环境并没有改为超级用户的,仍是普通用户的,所以有些命令仍无法使用。输入“su - ”命令,则与登录超级用户完全一样了。输入命令“exit”返回到以前登录的用户。步骤 4:查看命令的帮助信息1)使用“man 命令
13、名” ,查看完帮助后,按“q”键返回命令行。2)使用“命令名 -help”步骤 5:显示用户信息1)显示当前登录系统的用户信息:who H(不包括 su 命令切换的用户)2)显示当前操作的用户信息:whoami 步骤 6:目录命令1) pwd命令pwd (即 print working directory,打印工作路径) 命令的功能是显示当前的工作路径。如现在是在“/home/aaa”目录下,则可以用此命令来证实。输入命令“ pwd”2) cd命令cd命令用来切换目录,假设在刚才的目录切换到另一目录,如下所示:$ cd /usr/bin 将当前的目录转到“/usr/bin”下$ pwd/usr
14、/bin$ cd 此命令返回工作目录$ pwd$ /home/aaa3) mkdir命令mkdir 命令的功能是建立目录输入命令“mkdir 目录名” ,如输入“mkdir /home/aaa/mydir”,则创建了一个新的目录mydir,位4置在/home/aaa 目录中。4) rmdir命令rmdir命令的功能是删除目录输入命令“rmdir 目录名” ,如输入“rmdir /home/aaa/mydir”,则该目录被删除。5)mv命令功能是移动目录输入命令“mv 源目录 目标目录 ”6) cp命令cp命令的功能是复制目录输入命令“cp -R 源目录 目标目录”步骤 7:有关文件的命令1)
15、ls命令ls命令的功能是显示指定目录的内容,例如:输入命令“ ls a ” 此命令显示当前目录下的所有文件 (参数“a” 表示所有文件,“-”号是用来控制参数) 显示时,文件名前带 “.”号表示隐含文件。输入命令“ ls l”,参数“-l”表示额外的文件信息。2) cat命令cat命令的功能是显示文件内容,也可用于文件的创建和连接。如在用户主目录下创建一个名为f1 的文件,输入命令“ cat f1”,即可输入内容了,内容为“Linux is useful for us all.”,按“Ctrl+D”结束输入,输入时只能用退格键修改,一旦按回车就不可修改了。再次输入命令“cat f1”,就可以查
16、看刚才输入的内容了。如果还使用命令“ cat f1”,则文件内容会被新内容覆盖。如果使用命令“cat f1”,则可向文件中追加内容。如果已有两个文件f1 和f2,可以把他们合并为一个文件。输入命令 “cat f1 f2 f”即可,f 为新文件名。3) cp命令cp命令的功能是复制文件,用法是:cp options 源文件 目标文件cp命令还可以使用以下参数:-f:强行覆盖已存在的目标文件。-i:在强行覆盖已存在的目标文件时给出提示,如果要覆盖,按“y”键即可。4)mv命令功能是移动文件输入命令“mv 源文件 目标目录 ”5)rm 命令功能是删除文件输入命令“rm 文件名”6) more 命令分
17、屏显示文本文件中的内容输入命令“more 文件名”按“q”键退出步骤 8:其他的命令1) clear命令clear命令的功能是清除屏幕,用法如同DOS 中的cls命令输入命令“ clear ”52) reboot命令reboot命令的功能是重新启动系统输入命令“ reboot”3)shutdown命令输入命令“shutdown r now” 立即重新启动系统输入命令“shutdown h now” 立即关闭计算机4)halt 命令输入命令“halt” 立即关闭计算机步骤 9:管理组群的Shell命令1)groupadd 命令输入命令“groupadd staff ”,新建一个组群staff2)
18、groupmod 命令输入命令“groupmod 参数 组群名”-g 修改组群 GID-n 修改组群名称3)groupdel 命令输入命令“groupadd staff ”,删除组群staff步骤 10:修改文件权限的 Shell 命令(1)字母表示法Linux 下利用“ls l”可以列出每个文件的权限。- r w x r w x r w x 文件类型(- 为普通文件,d 为目录文件,l 为符号链接文件,b 为块设备文件,c 为字符设备文件)每组文件访问权限位置固定,依次为读取、写入和执行权限,如果没有此项权限,就用“-”来表示。如“-rw-r-r-” 表示该文件是普通文件,文件所有者可以读写
19、,同组用户和其他用户只有读权限。(2)数字表示法字母表示形式 十进制数表示 权限含义 字母表示形式 十进制数表示 权限含义- 0 无任何权限 r- 4 可读-x 1 可执行 r-x 5 可读和执行-w- 2 可写 rw- 6 可读可写-wx 3 可写和执行 rwx 7 可读、可写和执行1)chmod 命令格式一:chmod 数字模式 文件如果在主目录下已有文件 f1,输入命令 “ls l f1”查看 f1 文件的权限,再输入命令“chmod 766 f1 ”,修改 f1 文件的权限为所有者具有全部权限,同组和其他用户可读可写。格式二:chmod 功能模式 文件u 文件所有者 g 同组用户 o
20、其他用户+ 增加权限 - 删除权限 = 赋予给定权限r 读取权限 w 写入权限 x 执行权限输入命令“chmod go-w f1”,则去掉 f1 文件同组用户和其他用户的写入权限。2)chgrp 命令功能:改变文件的所属组群其它用户的访问权限同组用户的访问权限文件所有者的访问权限6格式:chgrp 组群名 文件名3)chown 命令功能:改变文件的所有者和所属组群格式一:chown 用户名 文件名格式二:chown 用户名: 组群名 文件名4、思考(1)Linux系统在用户登陆和操作界面以及文件系统上有哪些特点?实验二 vi编辑器的使用和 Linux环境下的编程1、实验目的(1)学会使用vi编
21、辑器编辑文本。(2)编写C语言程序,使用gcc编译器对其编译和调试。2、实验预备内容(1)参阅相关Linux操作系统的安装手册,熟悉Linux 的基本安装和配置;(2)参阅相关Linux的命令参考手册,熟悉Linux 下的操作命令。3、实验内容(1)进入和退出vi进入 vi在系统提示符($)下输入命令vi 和想要编辑(建立)的文件名(如example),便可进入vi。退出 vi在命令方式下可有几种方法退出vi 编辑器:wq 把编辑缓冲区的内容写到你编辑的文件中,退出编辑器,回到UNIX shell下。:q! 强行退出vi。感叹号(! )告诉vi,无条件退出,丢弃缓冲区内容。这样,先前对该文件所
22、做的修改或输入都被抛弃。(2)新建文件在UNIX提示符$之后,输入命令 :vi myfile,然后按Enter键。输入插入命令i(屏幕上看不到字符 i)。然后,输入以下文本行:To the only woman tht I,For many year you have been my wife发现这两行有错,进行改正:按Esc键,从插入方式回到命令方式。按光标上移键,使光标移到第一行。按光标左移键,使光标移到“tht”的第二个“t”处。输入i(这是插入命令),然后输入 a。该行变成如下形式:To the only woman that I,按光标右移键,使光标移到“I”上。我们想在“I”之后输
23、入一个空格和单词“love”。为此,输入附加命令“a” 。结果屏幕显示为:To the only woman that a I,这是怎么回事儿?原来是:我们先前使用了插入命令i ,至今并未用Esc键返回命令方式。所以,输入的所有字符都作为输入文本予以显示。按 Esc键,返回命令方式。利用x命令删除错误字符。然后,进入插入方式,输入正确字符。最后输入如下所示的文本:Tothe only woman that I love,7For many year you have been mywwifeI live you wich my lifeabd could not have picked muc
24、h better.将你编辑的文本文件存盘。(利用 :wq 命令,或者 :x 命令)重新进入 vi编辑程序,编辑上面的文件。 (如:$ vi myfile)在屏幕上见到myfile文件的内容。在屏幕底边一行显示出该文件的名称、行数和字符个数:“myfile”4 lines,130 characters它仍然有错,需进一步修改。将光标移到第二行的year的r处。输入a命令,添加字符 s。按 Esc,回到命令方式。输入命令 10Space,光标移至何处? -光标右移 10 个字符位置,如果输入 5Space呢?输入 3Space呢?利用取代命令r 将mywwife改为my wife。将光标移至第三行
25、。输入新行命令O,屏幕上有什么变化? -光标移至上一行(新加空行)的开头。输入新行的内容:Weve been through much together此时,vi处于哪种工作方式?按 Esc,回到命令方式。将光标移到第四行的 live的i 字母处。利用替换命令s将i改为o。在第四行的you之后添加单词dearly。将wich改为with。修改后的文本是以下内容:To the only woman that I love,For many years you have been my wifeWeve been through much togetherI love you dearly wit
26、h my lifeand could not have picked much better.将该文件存盘,退出vi。重新编辑该文件。并将光标移到最后一行的have的v字母处,使用d$命令将v至行尾的字符都删除。现在想恢复 17 步的原状,怎么办?(使用复原命令u)使用 dd命令删除第一行;将光标移至through的u字母处,使用 C命令进行修改,随便输入一串字符。将光标移到下一行的开头,执行 5x命令,然后执行重复命令(.),发现了吗?5x命令可以删除几个字符呢?如果用 2x命令呢?屏幕内容乱了! 现在想恢复 17 步的原状,怎么办?(不写盘,强行退出vi)能用u或U命令恢复屏幕原状吗?(3
27、)编写C程序进入 linux 的文本模式之后,在命令行键入 vi filename.c 然后回车。filename.c 是用户即将编辑的c 文件名字,注意扩展名字是.c。 最基本的命令 I :当进入刚打开的文件时,不能写入信息,这时按一下键盘上的 I 键(insert) ,插入的意思,就可以进入编辑模式了。输入程序: main()printf(“Hello World!”);当文件编辑完后,需要保存退出,这时需要经过以下几个步骤:1)按一下键盘上的 Esc 键;2)键入冒号( :) ,紧跟在冒号后面是 wq(意思是保存并退出) 。如果不想保存退出,则在第二步键入冒号之后,键入 q!(不带 w,
28、即为不保存) 。如下所示::wq8或:q!退出 vi 编辑器的编辑模式之后,要对刚才编写的程序进行编译。编译的命令是:gcc filename.c -o outputfilename.out,其中 gcc 是 c 的编译器。参数:filename.c 是要编译的源文件的名称,outputfilename 表示输出文件名称,中括号表示括号内部的内容可输入也可以不输入(中括号本身不再命令行中出现) 。如果不输入 outputfilename.out,默认的输出文件是 a.out 。最后一步是运行程序,方法如下:./outputfilename.out实验三 进程管理1、实验目的(1)深入理解进程的
29、概念,加深对 Linux / UNIX 进程管理的理解。(2) 对进程进行管理。(3)掌握 at 调度的设置方法。(4)理解进行系统性能监视的基本方法。2、实验内容(1)管理Linux系统进程步骤 1:登录进入 LINUX 系统。输入正确的用户名和口令,登录 Linux 系统。步骤 2:访问命令行。打开“终端”窗口。步骤 3:回顾系统进程概念。每个运行的程序都会创建一个进程,进程分配到一个唯一的进程标识符 (PID) 。PID 被系统用于标识和跟踪进程,直到进程结束。操作系统内核管理所有进程的初始化和终止。每一个进程都要求系统资源 (例如 CPU 时间和 RAM 空间) 在其中工作。当进程启动
30、的时候,操作系统把系统资源分配给每个进程,当进程终止的时候,系统回收这些资源。在 Linux 系统启动的时候,首先启动的两个进程是 sched (调度) 和 init (初始化) ,它们管理着其他进程。Linux 系统中有几种不同类型的进程:守护进程:由 Linux 内核启动的进程,为了特定目的而存在。例如,lpsched 守护进程存在只是为了处理打印作业。父进程:派生其他进程的进程是父进程。一个叫做 init 的守护进程是第一个调用的进程。每一个进程,除了 init 之外,都有一个父进程。子进程:由其他进程派生出来的进程叫做子进程。孤儿进程:在进程返回输出之前,它的父进程结束了,这样的进程叫
31、做孤儿进程。僵进程:子进程没有带着输出返回给父进程。这样的进程在系统中变成丢失的进程。步骤 4:ps 命令和信息。ps 命令用于列出当前系统中运行的进程。如果一个进程耗时太长,或者看上去好像已经终止了,表现为一个终端窗口不再响应或挂起,通常需要使用 ps 查看系统中的进程。通过列出进程,可以查看初始化进程的命令或程序的名字,以及所有它派生出来的子进程。通过多次执行 ps 命令,查看进程的时间进程占用的 CPU 时间,可以检查一个进程是否还在运行。如果时间不再增长,那么进程可能已经终止了。如果进程占用太长的时间或者已经停止,可以使用 ps 命令检查进程的进程 ID (PID) ,然后杀死进程。p
32、s 命令的输出将显示 PID 号和与其相关的命令或程序。PID 号通常用于终止一个进程。ps 命令 ( ps -options ) 的 3 个主要选项如下表所示。表 3-1 ps 命令选项ps 选项 意义 功能ps 无选项 显示当前 shell 或终端窗口中,当前用户的进程信息ps e 每一个 显示系统中每一个进程的信息ps f 完全 产生一个完全列表,给出每个进程的所有可用信息ps -u userid 用户 显示特定用户的所有进程ps -l 长格式 以长格式给出每个进程的所有可用信息9基本的 ps 命令显示在当前 shell 中的进程信息,用户只能够查看在这个终端窗口中初始化的进程。输入 p
33、s 命令,将结果填入表 3-2 中。表 3-2 实验记录PID TTY TIME CMD输入 ps -f 命令,显示运行在系统中的进程的完全信息,填入表 3-3 中。表 3-3 实验记录UID PID PPID C STIME TTY TIME CMDps -f 命令输出的各栏标题见表 3-4 所示。表 3-4 ps -f 各 栏标题值 描述UID 初始化进程的用户 IDPID 进程的进程标识号。PID 可以用来杀死进程PPID 进程的父进程标识号C 进程的优先级STIME 进程的启动时间TTY 控制进程终端的终端举型TIME 进程已运行的时间CMD 启动该进程的 Shell 命令输入 ps
34、l 命令。F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMDps -l 命令输出的各栏标题见表 3-5 所示。表 3-5 ps -l 各栏标题值 描述UID 进程启动者的用户 IDPID 进程号PPID 进程的父进程标识号NI 进程的优先级SZ 进程占用内存空间的大小(KB 为单位)TTY 进程所在终端的终端号TIME 进程已运行的时间10CMD 启动该进程的 Shell 命令步骤 5:查看作业。1)输入命令“ vi f1 ” ,在前台启动 vi 文本编辑器,打开 f1 文件。2)按组合键“ Ctrl + Z ” ,暂时挂起“vi f1”作
35、业,屏幕显示该作业的作业号。1 + Stopped vi f13) 输入命令“ jobs ”查看当前系统中的作业。4)输入“ps -f ”命令,显示运行在系统中的进程的完全信息。5)重复上面步骤,再创建一个文件 f2 并挂起。步骤 6:根据命令名搜索特定的进程。为了终止一个进程,必须找到该进程的 PID。大多数运行的系统中,有上百个进程在运行,ps -ef 的列表可能很长。如果知道启动进程的执行程序的名字,可以更快地找到 PID。通过把 ps 命令的输出结果输入到 grep 中,可以搜索想要终止的特定进程,确定正确的 PID。grep 命令可以在其他命令的输出中搜索所有类型的特征字符串。-l
36、(长的输出) 选项将显示和找到的PID 相关的进程的名字;-e 选项显示 PID 和初始化命令的名字。1) 单击 “应用程序”-“ 附件”-“计算器”命令,打开“计算器”程序。2) 在当前的终端窗口中,执行命令:ps e | grep gcalctool(“计算器 ”程序的进程名是“gcalctool”) ,查找和“ 计算器 ”相关的所有进程。3) 在当前终端窗口中执行命令:pgrep l gcalctool4)输入“kill -9 计算器的进程号” , “计算器”进程被杀死。步骤 7:确定一个要终止的进程。当试图终止一个程序,或者释放一个挂起的终端窗口的时候,杀死和不响应的应用相关的 PID
37、 可能还是不够的,一般需要杀死那个进程的父进程,在少数情况下,甚至要杀死父进程的父进程。为了沿着层次结构,从子进程追溯到派生它们的父进程,必须能够查找 PID 和 PPID。必须首先确定最低级不响应进程的 PID。通常,可以试着去杀死那个进程。如果这样做不能够停止那个进程,可能需要杀死它的父进程。杀死父进程将杀死所有它派生的子进程。杀死一个父进程也比杀死几个子进程快得多。1) 输入命令 sleep l000&,创建一个进程,把执行挂起 1000 秒 (大约 15 分钟) 。&表示在后台运行命令,返回 shell 提示符,这样您可以继续工作。2)输入命令“jobs” ,查看作业信息。哪个作业是正
38、在运行的?哪个作业是停止的?3)输入 ps -f 命令。查看父进程和子进程关系。步骤 8:使用 kill 命令终止一个进程。信号用于终止、挂起和继续进程。有时候使用 Ctrl + c 可以终止一个不响应的进程。这样向进程发送一个中断 (INT) 信号,终止它及所有它派生的子进程。kill 命令提供了一个终止不想要的命令进程的直接方法。当想停止一个运行了很长时间的命令的时候,或者当需要终止一个不能够正常退出的进程的时候,它很有用。指定 PID 正常地杀死一个进程。kill -signal processid为了使用 kill 命令终止一个进程,应该首先键入 ps 找出进程的 PID,然后键入 k
39、ill 紧跟着 PID。如果使用 kill 而没有指定信号,则信号 15 (SIGTERM) 将被发送给特定 PID 号的进程。这叫做软杀死,通常终止了进程。如果可能,最好软杀死进程,这样它可以正确地关闭文件,温和地终止进程。如果需要强制终止一个进程,可以使用带 -9 选项的 kill 命令。这个选项叫做强制杀死,当 shell 对所有其他终止信号都不响应的时候,需要使用它来杀死 shell。kill -9 processid注意:对于 shell 之外的进程,把 kill 9 (SIGKILL) 作为最后的选项,因为它是一种生硬的方法,不允许正确的进程终止。1)输入命令 ps f ,显示在当
40、前 shell 中运行的进程的完整信息。现在什么进程正在运行?因为 sleep 进程现在是一个孤儿进程,已经被 init 进程 (PID #l) 收养,输入命令,对 sleep 的 PID 执行软杀死。2)输入“kill -9 vi f1 的进程号” ,杀死“vi f1”进程。3)也可以输入“kill -9 %2” ,杀死“vi f2 ”进程,2 代表它的编号。11(2)at调度的设置方法所谓进程调度就是设置某个指定的作业在固定的时间、固定的频率、或者系统空闲时自动执行的操作。根据作业要求执行的条件不同,可选不同的调度方式。 at调度:在指定的时间执行一次特定的作业。 batch调度:在系统空
41、闲时执行一次特定的作业。 cron调度:每到指定的时间久执行特定的作业,可执行多次。步骤 1:设置一个调度,要求在 2011 年 11 月 30 日 0 时,向所有用户发送一句问候。1) 超级用户输入命令“at 00:00 11302011” ,设置 2011 年 11 月 30 日 0 时执行的调度内容。2) 在 at提示符后输入“Hello World!”3) 按“Ctrl+D ”组合键结束输入,会显示作业号和将要运行的时间。步骤 2:设置一个调度,要求 3 分钟后向所有用户发送系统即将重启的消息,并在 2 分钟后重新启动计算机。1) 超级用户输入命令“at now +3 minutes”
42、,设置 3 分钟后的调度内容。2) 在 at提示符后输入“shutdown r +2”,系统将在 2 分钟后重启。3) “shutdown r +2”与“reboot +2”命令效果相同,都是在 2 分钟后重启。4) 按“Ctrl+D ”组合键结束输入。步骤 3:查看所有的at调度,并删除 2011 年 11 月 30 日执行的调度任务。1) 输入“atq”命令,查看所有的at调度,显示出作业号、何时运行以及at调度的设置者。2)输入“atrm 1”命令,删除作业号为 1 的at调度。3)再次输入“atq”命令,查看剩余的at调度内容。4) 3 分钟后系统将自动运行作业号为 2 的at调度内容
43、。先向所有用户发送消息,然后再等 2 分钟重新启动。(3)系统性能监视步骤 1:输入命令“top” ,屏幕动态显示 CPU 利用率、内存利用率和进程状态等信息。步骤 2:按“M”键,所有进程按内存使用率排列。步骤 3:按“T”键,所有进程按执行时间排列。步骤 4:按“P”键,恢复按照使用率排列。步骤:按“Ctrl + C ”组合键结束 top 命令。步骤 6:单击“应用程序”-“系统工具”-“系统监视器” ,打开系统监视器窗口。自动显示“资源”选项卡,查看当前 CPU、内存和交换分区、网络历史的使用情况。步骤 7:选择“进程”选项卡,默认显示当前用户启动的所有进程。单击“查看”菜单,选中“全部
44、进程”单选按钮,并选中“依赖关系”复选框,则显示系统中所有的进程。步骤 8:单击“编辑”菜单中的“首选项” ,在对话框“进程”选项卡中,选中“进程域”列表中的“用户”复选框,要求显示出启动进程的用户。步骤 9:在“系统监视器”窗口选择“文件系统”选项卡,显示当前系统中主要的文件系统。单击“编辑”菜单“首选项” ,在弹出的对话框“文件系统”选项卡中,选中“显示全部文件系统”复选框,要求显示出全部的文件系统。步骤 10:利用“系统日志”工具查看系统日志。单击“应用程序”-“系统工具”- “系统日志”菜单项,打开“系统日志查看器”窗口,可分别查看各类系统日志。 实验四 处理器调度一、实验内容选择一个
45、调度算法,实现处理器调度。二、实验目的在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。本实验模拟在单处理器情况下的处理器调度,帮助学生加深了解处理器调度的工作。12三、实验题目本实验有两个题,学生可选择其中的一题做实验。第一题:设计一个按优先数调度算法实现处理器调度的程序。提示:(1) 假定系统有五个进程,每一个进程用一个进程控制块 PCB 来代表,进程控制块的格式为:进程名指针要求运行时间优先数状态其中,进程名作为进程的标识,假设五个进程的进程名分别为 P1,P2,P3,P4,P5 。指针按优先数的大
46、小把五个进程连成队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程中的指针为“0” 。要求运行时间假设进程需要运行的单位时间数。优先数赋予进程的优先数,调度时总是选取优先数大的进程先执行。状态可假设有两种状态, “就绪”状态和“ 结束”状态。五个进程的初始状态都为“ 就绪”,用“R”表示,当一个进程运行结束后,它的状态为“结束”,用“E” 表示。(2) 在每次运行你所设计的处理器调度程序之前,为每个进程任意确定它的“ 优先数”和“要求运行时间”。(3) 为了调度方便,把五个进程按给定的优先数从大到小连成队列。用一个单元指出队首进程,用指针指出队列的连接情况。例:队首标志K2 K1 P
47、1 K2 P2 K3 P3 K4 P4 K5 P50 K4 K5 K3 K12 3 1 2 41 5 3 4 2R R R R RPCB1 PCB2 PCB3 PCB4 PCB5(4) 处理器调度总是选队首进程运行。采用动态改变优先数的办法,进程每运行一次优先数就减“1” 。由于本实验是模拟处理器调度,所以,对被选中的进程并不实际的启动运行,而是执行:优先数-1要求运行时间-1来模拟进程的一次运行。提醒注意的是:在实际的系统中,当一个进程被选中运行时,必须恢复进程的现场,让它占有处理器运行,直到出现等待事件或运行结束。在这里省去了这些工作。(5) 进程运行一次后,若要求运行时间0,则再将它加入
48、队列(按优先数大小插入,且置队首标志) ;若要求运行时间=0 ,则把它的状态修改成“结束”(E) ,且退出队列。(6) 若 “就绪” 状态的进程队列不为空,则重复上面(4)和( 5)的步骤,直到所有进程都成为“结束”状态。(7) 在所设计的程序中应有显示或打印语句,能显示或打印每次被选中进程的进程名以及运行一次后进程队列的变化。(8) 为五个进程任意确定一组“优先数”和“要求运行时间”,启动所设计的处理器调度程序,显示或打印逐次被选中进程的进程名以及进程控制块的动态变化过程。第二题:设计一个按时间片轮转法实现处理器调度的程序。13提示:(1) 假定系统有五个进程,每一个进程用一个进程控制块 P
49、CB 来代表。进程控制块的格式为:进程名指针要求运行时间已运行时间状态其中,进程名作为进程的标识,假设五个进程的进程名分别为 Q1,Q2 ,Q3,Q4,Q5。指针进程按顺序排成循环队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程的指针指出第一个进程的进程控制块首地址。要求运行时间假设进程需要运行的单位时间数。已运行时间假设进程已经运行的单位时间数,初始值为“0”。状态有两种状态, “就绪”和“ 结束”,初始状态都为“就绪”,用“R”表示。当一个进程运行结束后,它的状态为“结束 ”,用“E”表示。(2) 每次运行所设计的处理器调度程序前,为每个进程任意确定它的“要求运行时间” 。(3) 把五个进程按顺序排成循环队列,用指针指出队列连接情况。另用一标志单元记录轮到运行的进程。例如,当前轮到 Q2 执行,则有:标志单元K2 K1 Q1 K2 Q2 K3 Q3 K4 Q4 K5 Q5K2 K3 K4 K5 K12 3 1 2 41 0 0 0 0R R R R RPCB1 PCB2 PCB3 PCB4 PCB5(4)