《基于UNIX操作系统的编程》期末复习思考题.docx
《《基于UNIX操作系统的编程》期末复习思考题.docx》由会员分享,可在线阅读,更多相关《《基于UNIX操作系统的编程》期末复习思考题.docx(20页珍藏版)》请在冰豆网上搜索。
![《基于UNIX操作系统的编程》期末复习思考题.docx](https://file1.bdocx.com/fileroot1/2023-5/23/7689c298-8c22-4fef-b318-453e9714a78c/7689c298-8c22-4fef-b318-453e9714a78c1.gif)
《基于UNIX操作系统的编程》期末复习思考题
复习思考题
1、UNIX操作系统中的两大基本概念是什么?
“文件”和与其相对应的“进程”是UNIX系统中的两个最基本概念.
2、UNIX系统中的标准命令格式是什么?
$命令名[-命令任选项][命令参数]
3、文件系统中可以包含哪些类型的文件?
如何判断一个文件的类型是什么?
UNIX系统把文件分成三类:
普通文件,目录文件,设备特殊文件
普通文件包括源程序、图表、电子邮件、可执行程序等;
目录文件其中包括若干目录项,每个目录项中存放一个文件名及其相关信息,这个文件名可以是普通文件、下一级子目录文件或设备特殊文件的文件名。
设备特殊文件每个I/O硬件都有一个文件名与其对应,该文件中并不存有具体信息,而是代表该设备的驱动程序入口地址.
4、什么是用户的主目录?
什么是当前工作目录?
什么是相对路径名?
什么是绝对路径名?
主目录用户登录进入系统时的初始工作目录,由/etc/passwd文件指定
当前工作目录用户当前所处在的目录
相对路径:
起始点是当前工作目录的路径名
绝对路径:
起始点是根目录(/)的路径名
5、什么是通配符?
UNIX系统中包括哪些常用的通配符?
在UNIX系统中,常常使用通配符来代替文件名中某一类
类或某一种字符串,使用户在表达多个文件名时,只需使用
一个带通配符的文件名,来代表若干个文件名,而不是把这
若干个文件名一一枚举出来.
例如:
student*包括student,student2,student_deve,student9a,
student.log等所有以student开头的文件名.
p*.c包括prog.c,people.c,p.c,p31_data.c,ppp.c等
所有以p开头,以.c结尾的文件名.
file?
匹配file1,file2,filex,file_,filea等所有以file开
头,长度为5个字符的文件名.
?
x?
匹配所有长度为3个字符,且第二个字符为x的
文件名,如:
1x1,axy,3xr等.
com[abc]只匹配coma,comb和comc三个文件名.
dot[a-z]匹配文件名长度为四,且最后一个字符为a到z的
文件名(共26个).
dep[13-79]匹配文件名长度为四,且最后一个字符为1,3,4,5,
6,7和9的文件名.
6、一个文件通常包括哪些属性?
如何获取文件的属性信息?
ls-l命令
7、文件的读写访问权限是如何标定的?
怎样改变一个(些)文件的特定权限?
chmod命令
8、进程的标准输入文件是什么?
进程的标准输出文件是什么?
进程的标准错误输出文件是什么?
标准输入:
键盘fd=0
标准输出:
荧光屏fd=1
标准错误输出:
荧光屏fd=2
如果一个进程在运行时需要输入输出数据,在缺省状况下
是从标准输入上读入数据,向标准输出上输出结果。
利用
shell的重定向操作符,可以把进程的输入和/或输出数据重
新定向的任意其它文件。
例如:
$catfile运行结果(file的内容)送到标准输出荧光屏
$passwd所需数据(新老口令)从标准输入键盘读入
$ls-Yabc
ls:
invalidoption–Y错误信息送到标准错误输出(荧
光屏)上显示
标准错误输出重定向:
command2>filename(2和>之间无空格)
进程运行中的错误信息重定向到文件filename,例如:
$cc-ocore_prtcore.c2>err.log
在编译过程中如果core.c中有语法或/和词法等静态错
误,则把错误信息保存在文件err.log中.
$catfile1file2>file32>errfile
如果命令运行正常,则把结果(连接file1和file2)存入file3中,
如果出现错误,则把错误信息存放到errfile中.
$grepstring6data_sav>count_log2>&1
把进程的出错信息存放到标准输出(已重定向到count_log)
中,即把标准输出和标准错误输出都定向到一个文件中.
管道
管道用于连接两个命令,它把前一个命令的标准输出重
定向给后一个命令作为标准输入,其格式为:
command1|command2
对command1来说标准输出被重新定向到管道,对
command2来说标准输入也被重新定向为管道.
9、输入输出重定向包括哪些操作符号?
它们的意义、作用和用法分别是什么?
输出重定向
command>filename进程输出覆盖文件filename
或command>>filename进程输出追加到文件filename
后面,不覆盖filename
例如:
$catmyfile
把文件myfile的内容输出到标准输出文件----荧光屏上
$catmyfile>newfile
把文件myfile的内容输出到文件newfile中(标准输出已被
重新定向到newfile).其结果相当于拷贝文件.
$catfile1file2>file3
文件file1和file2的内容被依次送到文件file3中----把多个
小文件连接成一个大文件.
$catabc>>xyz
把abc添加到xyz已有内容后面,而不是覆盖xyz
应用举例:
①.按字母顺序显示当前系统中所有已登录的用户:
$who>temp1
把当前登录用户的名单保存在temp1中
$sorttemp1>temp2
把排序后的名单保存在temp2中
$moretemp2
逐屏显示排好序的用户名单
$rmtemp1temp2
删除不用的临时文件
②.记录长时间运行程序的日志:
$system_monitor>>run_log
运行中的信息累加(而不是覆盖)到文件run_log中,便于
随时查询.
输入重定向
command进程的输入来自文件filename,例如:
$cat↙cat命令后无文件名,cat等待键盘输入
abcde
abcde键盘输入内容
thisisatestline
thisisatestlinecat进程输出内容
^d
$cataaaaaaaaaaaaaaa
bbbbbbbbcat进程的输入来自重定向文件abc
cccccccccccccccccc输出到标准输出荧光屏
$
10、常用的文件操作命令有哪些?
其基本功能是什么?
11、如何进行基本的文件编辑操作?
12、UNIX系统中包括哪些Shell类型?
各种shell的提示符是什么?
各种shell的退出命令什么?
Shell的常用种类:
1.Bourneshell----程序名为sh,提示符为$
2.Cshell----程序名为csh,提示符为%
3.Kornshell----程序名为ksh,提示符为$
另一常用提示符:
#----超级用户(无论何种shell)
在UNIX操作系统结构中Shell--工具层
Shell的退出命令:
exit主要用于退出B_shell和K_shell
logout主要用于退出C_shell
^d可用于退出各类shell.因^d常含有其它
功能含义,故尽量不用或少用^d来作退
出命令.
注:
exit和logout是正规退出系统的命令,执行时
通常包含许多善后工作,而^d没有.
13、什么是shell的环境变量?
常用的环境变量和意义是什么?
HOME=/usr/computer/student6
用户主目录,注册时的初始目录
PATH=/bin:
/usr/bin:
$HOME/bin:
./
键盘命令的搜索路径
SHELL=/bin/sh
当前运行的shell名称
TERM=vt100
当前所用的终端类型
PS1=$
shell的主提示符
IFS=
域分隔符,通常为空白符,用来分隔命令行各个域
环境变量可在shell运行时动态修改。
系统的基本环境变量放在/etc/profile中,用户
环境变量放在用户主目录下的.profile文件中,用户
shell启动时,先执行/etc/profile,再执行用户主目录
下的.profile。
14、什么是shell的系统变量?
常用的系统变量有哪些?
$0当前shell程序的名字
$1~$9命令行上的第一到第九个参数
$#命令行上的参数个数
$*命令行上的所有参数
$@分别用双引号引用命令行上的所有参数
$$当前进程的进程标识号(PID)
$?
上一条命令的退出状态
$!
最后一个后台进程的进程标识号
系统变量只能引用不能修改!
例如:
$echoaabbccdd$$
aabbccdd2391
$catfile1file2>file32>errlog
$echo$?
(非0表示命令运行失败,错误信息在errlog文件中)
15、如何设定和使用用户自定义变量?
局部变量是由用户根据需要任意创建的.变量
名通常由一个字母后跟零个到多个字母、数字或
下划线组成。
引用变量的值时,在变量名前面加
上$符号.例如:
$AA=123定义变量AA
$echo$AA引用变量AA的值
123(变量AA的值)
$B="thisisastring"定义变量B
(字符串中有空格时用引号)
$echo$B引用变量B的值
thisisastring(变量B的值)
16、单引号、双引号、反撇号、花括号的作用和用法是什么?
shell规定单引号禁止变量替换,元字符$和*等保持其符号本身;
而双引号允许元字符变量替换.
$a="heisastudent"
$echo"Shesaid:
$a"
Shesaid:
heisastudent
$b='Thevalueofais$a'
$echo$b
Thevalueofais$a
$c="Thevalueofais$a"
$echo$c
Thevalueofaisheisastudent
反撇号中的字符串作为命令名
$b=`date`(反撇号中的字符串作为命令名)
$echo$b
SatFeb116:
28:
19Beijing2003
$c="Thereisateach"
$echo"$cerreadingroom"
readingroom(无变量cer,用空串替代)
$echo"${c}erreadingroom"
Thereisateacherreadingroom
(花括号将变量名和后面的字符串区分开)
17、shell可接收哪些形式的键盘命令?
何时开始接收键盘命令?
何时开始执行键盘命令?
18、在UNIX系统中如何启动、查看、暂停、终止一个进程的运行?
获取进程状态信息:
ps命令
不带参数的ps命令运行时,显示该用户当前活
动进程的基本信息:
$ps
PIDTTYTIMECOMMAND
612tty080:
37sh
931tty080:
01ps
$
PID进程标识号.系统每个进程在其生命周期都
有一个唯一的PID.
TTY启动该进程的终端号
TIME进程累计占用CPU的时间
COMMAND产生该进程的命令
暂停进程运行:
sleep命令
sleeptime
sleep命令使运行它的进程暂停time指定的秒数.
例如:
$sleep5
[进程暂停5秒钟,什么也不作]
$
$sleep10;who
[进程暂停10秒钟后,显示系统中登录的用户名]
$echo"Iamsleeping…";sleep100;echo"Iamawake"
Iamsleeping…[等待100秒钟]
Iamawake
$
终止进程运行:
kill命令
通常在三种情况下进程被终止运行:
.进程运行完成,自动消亡;
.用户按^c或Del等中断键,强行终止前台进程的运行;
.用户发出kill命令,强行终止后台进程或键盘锁住了的
前台进程的运行.
kill命令的三种常用格式为:
killPID
正常结束进程,完成善后工作,类似于按Del键.
kill-1PID
先挂起该进程,终止子进程,完成善后工作,终止该进程.
kill-9PID
立即强行终止该进程,不作任何善后工作.可能出现资
源浪费和"孤儿"进程.
19、UNIX系统内部包含的常用即时通讯、半即时通讯、非即时通讯工具有哪些?
其基本用法是什么?
交谈命令write
writeusername[terminal]
双向通信命令talk
广播信息命令wall
邮件命令mail
20、shell编程的基本流程是什么?
如何执行一个shell程序?
1.建立shell文件
包含任意多行操作系统命令或shell命令的文本
文件;
2.赋予shell文件执行权限
用chmod命令修改权限;
3.执行shell文件
直接在命令行上调用shell程序.
实例:
1.建立shell文件(可用任何建立文本文件的方法):
$catprog1
who|grep$1
2.赋予执行权限:
(初始文本文件无执行权限)
$chmod740prog1
3.执行该shell程序
$prog1student5
prog1:
notfound
(shell在标准搜索目录中找不到prog1命令)
4.指定路径或修改环境变量PATH后执行shell程序
$./prog1student5
student5tty06Feb809:
12
21、shell的语句包括哪几大类型?
常用的有哪几种语句?
说明性语句:
以#号开始到行尾的部分,不被解释执行
功能性语句:
任意的操作系统命令、shell内部命令、自编
程序、其它shell程序名等。
结构性语句:
条件测试语句、多路分支语句、循环语句、
循环控制语句等。
22、常用的调试和跟踪shell程序的方法是什么?
23、UNIX系统中常用的系统管理命令有哪些?
其主要功能是什么?
1.磁盘管理:
磁盘空间监测命令:
df
df命令显示当前系统中各个逻辑磁盘(文件系统)中空闲的磁盘块(512字节/块)数和空闲的索引节点。
(即可建立的新文件数).
$df
/(/dev/root):
12158blocks2351i-nodes
/home(/dev/c0d0s2):
95417blocks7820i-nodes
$df-t
/(/dev/root):
12158blocks2351i-nodes
total:
52336blocks8039i-nodes
/home(/dev/c0d0s2):
95417blocks7820i-nodes
total:
373195blocks22746i-nodes
磁盘使用情况统计:
du
du命令统计指定目录及其所有子目录的磁盘使用情况,单位为磁盘块数.
$du缺省情况下统计当前目录
52./backup
86./data
2./lib
3./log
21./src
164
$du–a./run/tmp
统计./run/tmp目录及其所有子目录和文件的情况.
2.文件系统管理fsck
fsck命令通常由具有超级用户权限的系统管理员执行,用于检测和修复文件系统的错误.运行时显示如下过程信息:
**Phase1–CheckBlocksandSizes
检查索引节点表中文件大小和所用块数
**Phase2–CheckPathnames
检查目录和文件路径的正确性
**Phase3–CheckConnectivity
检查各目录之间的联结关系
**Phase4–CheckReferenceCounts
检查各文件的引用计数
**Phase5–CheckFreeList
检查文件系统的空闲块表
3.文件存储与备份tar
tar命令可把文件系统中的一个或一组文件打成一个文件包,存放到外存(磁带、软盘等)上或硬盘上文件系统的其它地方.常用于多个文件(包括目录)的备份或转移.基本命令格式为:
tar-cvftargetfile1file2file3…
把file1、file2、file3等文件备份到档案文件target中.
tar-tvftarget检查档案文件target中包含的文件信息.
tar-xvftarget[file]
从档案文件target中提取全部或file指定的文
件.
应用实例:
$tar–cvf/dev/tapefile1file2file3
把当前目录下的file1,file2,file3归档到磁带上.
$tar–cvf./data/trans.tar./src/*.c
把子目录src中的所有C语言源程序归档到子目录
data下的trans.tar文件中.
$tar–tvf./data/backup.tar
查看data目录下的归档文件backup.tar中包含的
内容.
$tar–xvffile.tar
把file.tar包含的所有文件读取到当前目录下.
$tar–xvf/dev/tapeaccount.clink.log
从磁带上读入account.c和link.log两个指定文件.
4.系统初始化控制进程init
init的主要功能就是根据/etc/inittab文件所描述
的过程,建立各个系统进程.
UNIX操作系统核心有多个运行级别,不同的运
行级别具有不同的系统功能.运行级别由init命令
的参数指定,常用的命令格式和参数为:
#init[01236]
0级:
关闭各种系统资源,关机.
1级:
进入单用户状态,拒绝普通用户登录.
2级:
进入普通多用户状态,允许普通拥护登录.
3级:
进入带网络功能的多用户状态.
6级:
关闭各种系统资源,重新启动操作系统.
init在引导系统进入到指定用户级别时,常常需
要调用指定目录下的各种由shell编写的控制程序,
例如下列目录:
rc0.d包括关机时要执行的各种控制文件.
rc1.d包括系统进入单用户时的各种控制文件.
rc2.d包含系统进入普通多用户状态时的各种初
始化文件.
rc3.d包含系统进入带网络的多用户状态时需要
执行的包括启动网络在内的各种初始化文件
rc6.d包含系统要重新启动时需要完成的各种善
后工作控制文件.
系统关机命令:
shutdown
UNIX系统关机时必须使用shutdown命令以完成
关机前的各种善后工作,如关闭后台系统进程,清理
缓冲区和卸载文件系统等.命令语法为:
shutdown[-hr]time[message]
-h完全关机
-r关机并重新启动系统
time关机时间,如17:
30、+10和now等
message关机时发向所有已登录用户的消息
例如:
#shutdown–rnow立即关机并重新启动
#shutdown–h+5"Systemwillshutdownin5
minutes,logoutnowplease!
"
文件加密命令:
crypt
文件压缩和解压命令:
compress/uncompress
用户定时执行任务:
at
24、多模块软件编译工具make的基本功能和用法是什么?
应用开发工具make可以根据程序中各模块的修改情况,重新编译连接目标代码,以保证目标代码总是由组成它的最新的模块共同生成。
make是在makefile的指导下工作的。
说明文件中首先规定了产生最终的可执行的目标文件所需要的各个模块及各个模块之间的关系,并规定了更新这些模块时所必须进行的动作。
make检查各模块的修改时间,按照说明文件的指导,自动地维护这些模块。
1、在其说明文件makefile中寻找目标文件。
2、保证这个目标文件依赖的所有文件都存在,并且它们都是最新的版本。
3、当任何一个所依赖的文件的修改晚于该目标文件的生成时间,重新创建目标文件。
make命令的格式为:
make[option][macro-definition][target]
1、make
使用当前目录下的缺省的说明文件makefile
2、make-fmymake
使用指定的mymake作为说明文件。
例如:
一个程序prog由四个模块main.c,x1.c,x2.c,x3.c组成,其编译过程如下:
cc–cmain.c
cc–cx1.c
cc–cx2.c
cc–cx3.c
cc–oprogmain.ox1.ox2.ox3.o
可执行程序prog是最后得到的结果。
Makefile示例:
prog:
main.ox1.ox2.ox3.o(目标prog依赖四个.o文件)
cc–oprogmain.ox1.ox2.ox3.o(产生prog所使用的命令)
main.o:
main.c(main.o所依赖的main.c)
cc–cmain.c(产生main.o所使用的命令)
x1.o:
x1.c
cc–cx1.c
x2.o:
x2.c
cc–cx2.c
x3.o:
x3.c
cc–cx3.c