《UNIX编程环境》期末考试样题及参考答案
一. 给出完成下列各项功能所需要的UNIX系统命令。要求:给出实现这一功能的完整命令;不能给出完整命令可以仅给出所需要的命令名称。必须陈述利用了这个命令的哪个功能或选项。每题2分,共24分。
1. 删除文件为-i的文件。
答:使用rm命令,由于命令会默认以减号开始的命令行参数为命令处理的选项而不是处理对象,所以需要使用特殊的选项--以显式的方式说明选项的结束。命令为 rm -- -i
2. 命令netstat有很多选项,如何得知使用哪个选项可以打印出ip
的路由表?
答:使用man命令,man命令可以在线查阅命令的使用手册,使用命令man netstat查出netstat命令的使用手册,看看哪个选项和什么命令格式用来打印出ip的路由表。
3. 删除当前目录下的子目录tmp及该目录下属的所有文件和子孙目
录。
答:使用rm命令,rm命令有个选项可以递归地删除一个子目录,命令为
rm –r tmp
4. 在你完成上机作业过程中,使用什么命令将源程序文件myrm.c
编译、链接生成可执行文件?可执行文件是什么名字?如何运行?
答:使用gcc命令或者make,实现编译和链接 gcc myrm.c –o myrm 或者:make myram
生成的可执行文件名按照惯例为myrm,一般情况下当前环境变量PATH不包括当前目录,所以,运行这个可执行程序应当加上当前路径,命令为:
./myrm命令有个选项可以递归地删除一个子目录,命令为 ./myrm –r tmp
5. 检索目录src以及其子孙目录中的所有文件名后缀为.c和.h文件,查找哪些文件中含有字符串TPDU,并列出在这文件中的行号。
答:使用find命令和grep命令。find命令可以在指定的目录树 中查找满足某个条件的文件或目录,并对查找到的满足条件的对
第1页(共9页)
象执行一个动作。指定查找条件为“文件名后缀为.c和.h”,动作为“查
找哪些文件中含有字符串TPDU,并列出在这文件中的行号”,分别是find
的-name和-exec选项。完整的命令为:
find src –name ”*.[ch]” –exec grep –n TPDU {} /dev/null \\;
6. 统计出由用户liu创建并且正在运行的进程数目。
答:使用ps命令列表出系统中所有进程,过滤后仅保留用户liu创建的进程(用grep),每个进程占一行,用wc命令统计一共有多少行即可。
ps –ef | grep liu | wc –l
7. 去掉文件list.txt中的所有空行(所谓空行指:行内不含有任何除空
格之外的字符),存为新文件list-new.txt。
答:使用grep命令可以用正则表达式对文本文件过滤,-v选项用于筛选掉能匹配指定正则表达式的行,描述一个空行的正则表达式为^ *$,即:从行首开始(^),有零个到多个空格( *),然后是行尾($),命令为:
grep –v ’^ *$’ list.txt > list-new.txt
8. 程序文件fexc.c约有2000行,保留了一个备份fexc0.c后另个
程序员在fexc.c中作了多处修改,如何找出他在原先程序的基础上作了哪些修改?
答: diff命令可以对文本文件进行比较,找出两个文件的差别。由于C语言源程序文件为文本文件,可以用diff完成上述功能。完整的命令为:
diff fexc0.c fexc.c
9. 目录mywork.dir上周的备份目录为mywork.bak,其中仅有一
小部分文件作了修改,仅仅将被修改过的文件和新创建的文件拷贝到备份目录。
答: cp命令实现了增量拷贝的功能,增量拷贝的基本功能就是检查源目录下的文件和目的目录下的同名文件的最后一次修改时间,当源文件的最后一次修改时间晚于目的文件的最后一次修改时间,或者同名的目的文件不存在时,才执行复制操作。完整的命令为:
cp –ur mywork.dir mywork.bak
10. 程序xserverd正在运行,随时间的变化,系统的内存资源越来越
少。如何判断是否是该程序在运行过程中存在内存泄漏导致内存资
第2页(共9页)
源越来越少?
答:ps命令的-l选项,可以打印出进程当前的SZ属性,即:进程的虚拟内存空间大小。当进程在运行过程中存在内存泄漏时,进程的虚拟内存空间大小会逐渐随时间增大。使用ps –l | grep xserverd可以看出进程xserverd属性。
11. 系统在当前一段时间内出现CPU负载很重现象,系统的响应时间明显增大。怎样判断是哪些程序的运行占用了过多的CPU而导致的系统负载过重?
答:ps命令可以打印出进程当前的TIME属性,即:进程运行占用的CPU时间(不计睡眠时间)。使用ps命令观察哪些进程的TIME属性随时间在同步增长,就可以判断出哪些程序的运行占用了过多的CPU而导致的系统负载过重。
12. df –h /opt命令的执行格式如下:
Filesystem Size Used Avail Use% Mounted on /dev/sda6 90G 47G 39G 55% /opt 命令列出了磁盘使用情况,如何自动地在终端上每1分钟给出一次报告?
答:自动地重复执行一个命令,利用shell的循环机制。让shell睡眠60秒钟的命令为sleep 60。整个命令为:
while true; do df –h /opt; sleep 60;done
二、 判断题 每题2分共20分, 下列说法是否正确,并简述理由。
注意:理由陈述不正确不得分。
1. UNIX文件权限设计为简单的三级控制,用户liu对用户sun的文
件data.txt要么具有全部的读权限,要么不可以读。因此,没有办法限制liu只对文件的指定部分读。
答:错误。可以利用SUID权限,用户sun将文件data.txt的读写权限设置为rw-------,由文件所有者sun自己编写程序以实现对文件的访问,程序中的访问当然可以限制只对文件的指定部分读,但是该程序文件的属性应当为rws--x--x,用户liu只有执行这个可程序程序文件才能实现对文件data.txt的访问。
2. 命令ln仅允许对普通文件实现硬连接,对目录不许硬连接操作。所
以,所有目录的link数总为1。
答:错误。尽管命令ln仅允许对普通文件实现硬连接,对目录不许硬连接操作,但是,目录的硬连接由系统自动实现,当前目录下的.文件和子目录中的..文件,均是指向当前目录的硬连接,在创
建新目录时系统自动实现。所以,目录的link数会大于1,
第3页(共9页)