释,并说明程序完成的功能。(8分) #!/bin/sh
DIRNAME=`ls /root | grep bak` #(1) if [ -z \ #(2) mkdir /root/bak ; cd /root/bak #(3) fi
YY=`date +%y` ; MM=`date +%m` ; DD=`date +%d` #(4) BACKETC=$YY$MM$ #(5)
tar zcvf $BACKETC /etc #(6) echo \
答:#(1)获取/root中名称包含bak的文件或目录 #(2)判断1结果为空
#(3)创建目录/root/bak并进入该目录 #(4)获取当前时间的年月日
#(5)按照年(2位)月(2位)日(2位)_etc方式构造压缩文件名 #(6)压缩etc目录并保存在/root/bak中 6分
程序功能:若/root/bak不存在则创建之,然后将/etc按日期打包保存于该目录中。2分
六、填写标记代码行的意义,给出功能描述和前6行程序输出。(6分) #include <> #include <> int ntimes=0;
main(int argc, char *argv[]) { int pid,ppid;
int p_action( ), c_action( ); signal(SIGUSR1 , p_action); #(1) switch(pid=fork( )) { #(2) case -1: perror(\ exit(1); case 0: signal(SIGUSR1,c_action); ppid=getppid( ); for ( ; ; ) ; default: { for( ; ; ) { pause; sleep(1); kill(pid,SIGUSR1); #(3) } } } }
p_action( ) {
printf(\
}
c_action( ) {
printf(\ int ppid;
ppid = getppid(); #(4) kill(ppid, SIGUSR1); sleep(3); }
答:#(1)在父进程中为信号SIGUSR1绑定函数p_action #(2)创建子进程
#(3)向子进程发送信号SIGUSR1 #(4)获取父进程的PID4分
父进程无线循环向子进程发送信号,子进程收到信号后向父进程发送相同信号,父子进程之间各自记录全局变量的变化,结果如: child caught signal #1 parent caught signal #1 child caught signal #2 parent caught signal #2 child caught signal #3
parent caught signal #32分
七、设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30。(6分) 答:#!/bin/sh i=1
groupadd class1 while [ $i -le 30 ] 1分 do
if [ $i -le 9 ] ;then
USERNAME=stu0${i} 1分 else
USERNAME=stu${i} 1分 fi
useradd $USERNAME 1分 mkdir /home/$USERNAME
chown -R $USERNAME /home/$USERNAME 1分 chgrp -R class1 /home/$USERNAME i=$(($i + 1)) #或let “i=i+1” 1分 done
武汉大学计算机学院
2009-2010学年第一学期期末考试
《Linux原理与应用 》期末考试试卷( )
请将答案写在答题纸上。写在试卷上无效。
一、选择题(单选题,每小题2分,共20分) 1.Linux系统的开发模型是 __B____ 。
A.教堂模型 B.集市模型 C.层次模型 D.网状模型 2.在Linux中,进程优先级的相关参数有多个,与实时进程优先级相关的参数是 __D____ 。
3.__B___ 属于SYSTEM Ⅴ进程间通信方式。
A.管道 B.信号量 C.软中断信号 D.锁机制
4.在Linux系统中,每个进程都有4GB的虚拟地址空间,其中内核空间占用 __C___ 。
A.0~2GB-1 B.0~3GB-1 C.3GB~4GB-1 D.2GB~4GB-1 5.Linux文件系统中,文件在外存的物理地址放在 ___A___ 中。 节点 B.用户打开文件表 C.系统打开文件表 D. 进程控制块
6.以长格式列目录时,若文件test的权限描述为:drwxrw-r--,则文件test的类型及文件主的权限是__A____ 。
A. 目录文件、读写执行 B. 目录文件、读写 C. 普通文件、读写 D.普通文件、读
7.当字符串用单引号(’’)括起来时,SHELL将 __C____ 。
A.解释引号内的特殊字符 B.执行引号中的命令 C.不解释引号内的特殊字符 D.结束进程 8./etc/shadow文件中存放 _B_____ 。
A.用户账号基本信息 B.用户口令的加密信息 C.用户组信息 D.文件系统信息 9.Linux系统中,用户文件描述符0表示 ____A__ 。
A.标准输入设备文件描述符 B.标准输出设备文件描述符 C.管道文件描述符 D.标准错误输出设备文件描述符 10.为卸载一个软件包,应使用 ___B__ 。
-i -e -q -V
二、填空题(每空1分,共20分)
1.在版本中,进程有 ___6___ 种状态,进程使用 __exit____ 系统调用后进入僵死状态。 2.在Linux 中,管道分为 __2____ 种类型,若创建或打开管道时获得的描述符存放在fd中,则fd[1]是 _管道写描述符_ 。
3.Linux为用户提供的接口有 shell、XWINDOW、系统调用 4.Linux在I386体系结构中支持 __两级____分页机构。
5.每个设备文件名由主设备号和从设备号描述。第二块IDE硬盘的设备名为 __hdb____,它上面的第三个主分区对应的文件名是 __hdb3____ 。 6. 超级块是描述 __文件系统属性____ 信息的数据结构,索引节点是描述 __文件属性____ 信息的数据结构。
7.df命令完成_显示文件系统空间使用情况_____ 功能,du命令完成 _显示目录或文件占用磁盘空间容量_____ 功能。
8.命令组合(命令表)将 _建立新的子进程_____ 来执行命令。 9. 磁盘限额管理可以使用 __quota____ 软件工具,其中硬限额的容量应该__大于____软限额。
10.交换线程通过三种途径来缩减已使用的内存页面:减少buffer cache和page cache的大小、换出系统V类型的内存页面、换出或丢弃进程的页面
三、简答题(每小题5分,共20分)
2. vi编辑器有哪几种工作模式如何在这几种工作模式之间转换 答:Vi的工作模式有三种:命令模式、输入模式、末行模式。3分
在命令模式下输入a、A、i、I、o、O等命令之一可以进入输入模式,在输入模式下按Esc键回到命令模式;在命令模式下输入:进入末行模式,末行命令执行完后回到命令模式。
3. 什么是位置变量shell的变量类型有哪些种 位置变量是指命令行上传递给程序的参数。1分
Shell变量可以分为:用户自定义变量、环境变量、位置变量、特殊变量 4分
4.从内核实现的角度说明Linux进程共享文件的方式有哪几种举例说明什么情况下会产生对应的共享情况
答:进程通过多个file结构共享一个inode,进程共享一个file结构。 2分
五、下面给出了一个SHELL程序,试对其行后有#(n)形式的语句进行解释,并说明程序完成的功能。(8分)
#!/bin/bash #(1) dir=$1 #(2) if [ -d $dir ] #(3) then
cd $dir #(4) for file in * do
if [-f $file ] #(5) then
cat $file #(6) echo “end of file $file”
fi done else
echo “bad directory name $dir” fi
答:#(1)使用/bin/bash解释脚本 #(2)将位置变量1赋值给变量dir #(3)如果dir所指为目录 #(4)将当前目录改为dir
#(5)如果循环变量file所指是普通文件 #(6)显示文件file的内容 6分
程序功能:若命令行参数是一个合法目录则显示该目录下所有普通文件的内容,否则显示错误的目录名信息。2分
六、在Linux系统中运行下面程序,最多可产生多少个进程画出进程家族树。(6分)
main() {
fork(); fork(); fork(); }
D 答:最多可以产生7个进程 3分 F G 家族树如右 3分 H 七、试编写一个SHELL程序,该程序能接收用户从键盘输入的100个整数,然后求出其总和、最大值及最小值。(6分) 答:#!/bin/sh read max min=$max sum=$max i=1
while [$i –lt 100] do
read x
sum=`expr $sum + $x` if [ $max –lt $x ] then
max=$x fi
if [ $ x –lt $min ] then
min=$x fi
i=`expr $i + 1` done
echo \ max = $max min = $min \
试卷编号 07 拟题教研室(或教师)签名 教研室主任签名
B C E A
长沙理工大学考试试卷
一、单项选择题(每题2分,共40分)