2023年8月2日发(作者:)
山东农业大学课程考试专用
2014 - 2015学年第 2学期
《Linux操作系统》试题(卷)A
课程代码 BF002357 考试方式 闭卷 考试时长 100 分钟
姓名 学号 教学班号 专业 级 班
题 号
满 分
得 分
阅卷人
一
20
二
34
三
46
四
五
六
七
八
合计
100
一、选择题(每题1分,共20分)
1. Linux最早是由( )计算机爱好者开发?
A)Linus Torvalds B)Richard Peteresen C)Linux Sarwar D)Rob Pick
2. 以下( )不是Linux的文件系统
A. NTFS B. SWAP
C. ext4 3
3. 哪个命令可以将普通用户转换成超级用户( )。
A. super B. passwd D. su
4. 在Linux系统中,每个进程都有4GB的虚拟地址空间,但属于用户自己的虚拟地址是( )。
A.0~2GB-1 B.0~3GB-1
C.3GB~4GB-1 D.2GB~4GB-1
5. 从后台启动进程,应在命令的结尾加上符号( )。
A.& B. @ C. # D. $
6. ls –al 命令列出下面的文件列表,问哪一个文件是目录( )。
A.-rw------- 2 hel-s users 56 Sep 09 11:05 folder
B.-rw------- 2 hel-s users 56 Sep 09 11:05 goodbye
C.drwx----- 1 hel users 1024 Sep 10 08:10 zhang
D.lrwx----- 1 hel users 2024 Sep 12 08:12 cheng
7. 如何删除目录 /tmp下的所有文件及子目录( )。
A. del /tmp/* B. rm -rf /tmp C. rm -Ra /tmp/* D. rm –rf /tmp/*
8. Linux文件系统的目录结构是一棵倒挂的树,文件都按其作用分门别类地放在相关的目录中。系统程序和大部分应用程序的全局配置文件,我们将其放在( )目录中。
A./bin B./etc C./dev D.lib
9. 用户编写了一个文本文件,想将该文件名称改为txt.a,下列命令( )可以实现。
A. cd xt.a B. echo > txt.a
C. rm txt.a D. cat > txt.a
10. 一下哪个环境变量表示当前路径( )。
注:考试期间试卷不允许拆开。 第 1 页 共 10 页 山东农业大学课程考试专用
A. PATH B. PWD C. HOME
11. 已知某用户stud1,其用户目录为/home/stud1。如果当前目录为/home,进入目录/home/stud1/test的命令是以下( )?
A)cd test B)cd /stud1/test C)cd stud1/test D)cd home
12. /etc/shadow文件中存放( )。
A.用户账号基本信息 B.用户口令的加密信息
C.用户组信息 D.文件系统信息
13. vi中( )命令是不保存强制退出?
A.:wq B.:wq! C.:q! D.:quit
14. Shell程序中变量的引用方法是?( )
A.直接引用 B.加$引用 C.加括号引用 D.加引号引用
15. office 1 2命令行中的$2的值是多少?( )
C.1 D.2
16. 通常第一个SCSI硬盘的第一个分区用( )来表示?
A.had B.hda1 C.sda D.sda1
17. 使用自动补全功能时,输入命令名或文件名的前1个或几个字母后按( )键?
A.【Ctrl】键 B.【Tab】键 C.【Alt】键 D.【Esc】键
18. shell程序中的判断命令是什么?( )
19. 下面环境变量( )表示哪个命令可以查看进程的动态运行情况?
A.ps B.ll C.top D.Fs
20. 以下哪一个命令( )能用来查找/home目录及其子目录中包含'hello'字符串的5天以前访问过的文件,并将它们删除,删除前需要得到用户的确认,但是删除过程不需要任何提示。
/home –name “hello” –atime +5 –ok rm –f {} ;
/home –name “hello” –atime -5 –ok rm –f {} ;
/home –name “hello” –atime +5 –ok rm ;
/home –name “hello” –atime -5 –ok rm –f ;
请将选择答案填写在下面的表格里
1~5 6~10
11~15
16~20
二、应用题(共35分)
1、解释命令功能或根据功能写出命令(每小题2分)
1) 清空日志文件/var/log/dmesg
2) 将当前用户目录/home/user下的目录文件mydir包括的所有文件打包,文件名为文件,并且用选项参数“-v”显示所有的tar处理文件时的信息。
3) 复制文件/etc/passwd到/home/mydir目录下
注:考试期间试卷不允许拆开。 第 2 页 共 10 页 山东农业大学课程考试专用
4) kill -9 1234
5) kill –s SIGQUIT 1234
6) chmod a+x, g-w exer
7)
8)
9)
10)
ln passwd passwd_h
cd ~
grep ’root’ /etc/passwd
将cat kkk 的错误输出结果重定向到文件。 (kkk是一个不存在的文件)
2、下面给出了一个SHELL程序,试对其行后有#(n)形式的语句进行解释,并说明程序完成的功能。(5分)
#!/bin/bash #(1)
dir=$1 #(2)
if [ -d $dir ] #(3)
then
cd $dir
for file in *
do
if [-f $file ] #(4)
then
cat $file
echo “end of file $file”
fi
done
else
echo “bad directory name $dir”
fi
注:考试期间试卷不允许拆开。 第 3 页 共 10 页 山东农业大学课程考试专用
3、设计一个Shell程序,在/userdata目录下建立50个目录,即user1~user50,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。(5分)
4、将当前目录下以.txt为后缀的文件更名为*.doc(5分)
三、 问答题(共45分)
1.Vi的工作模式有几种?分别都是什么?(3分)
2.进程的通信方式有哪些?请说出其中的四种,哪种效率最高,为什么?(6分)
注:考试期间试卷不允许拆开。 第 4 页 共 10 页 山东农业大学课程考试专用
3. 简单介绍进程相关的系统调用函数fork、wait、execlp的作用 (6分)
4.分析下面程序的运行结果(5分)
int glob=6
int main()
{ int var=88
pid=fork();
if (pid<0)
printf(“fork error”);
else if (pid==0)
{ glob++;
var++;
}
else
sleep(2);
printf(“glob=%d,var=%d”,,glob,var)
return 0;
}
5.读下面的代码,回答以下问题( 10分)
注:考试期间试卷不允许拆开。 第 5 页 共 10 页 山东农业大学课程考试专用
① 该程序运行时会产生几个进程?为什么?
② 输出“A:my pid is…”和输出“B:my pid is…”的进程的亲缘关系如何,为什么?
main(){
int a;
pid_t pd1,pd2;
pid1=fork();
pid2=fork();
if (pid1==0 && pid2>0)
printf(“A:my pid is:%dn”,getpid());
if (pid1>0 && pid2==0)
printf(“B:my pid is:%dn”,getpid());
}
6.某管道操作程序的部分代码如下,阅读程序回答下面问题:(10分)
① 程序运行会有怎样的输出?说明你的分析。
② 请说明系统调用pipe( )为什么应该在fork( )调用前面使用?父子进程中先执行close(pipe…)是为了做什么?
③ wait(NULL)的作用是什么?
int main(){ int pid_fd[2];
注:考试期间试卷不允许拆开。 第 6 页 共 10 页 山东农业大学课程考试专用
pid_t pid;
char buf_f[100];
char* p_wbuf;
int r_num;
memset(buf_r,0,sizeof(buf_r));//对缓冲区进行初始化
if(pipe(pipe_fd)<0)
{
printf(“pipe create errorn”);
return -1;
}
if((pid=fork())==0){
close(pipe_fd[1]);
sleep(2);
if((r_num=read(pipe_fd[0],buf_r,100)).0)
注:考试期间试卷不允许拆开。 第 7 页 共 10 页
printf(“%d numbers read from the
pipe is %sn”,r_num,buf_r);
close(pipe_fd[0]);
exit(0);
}
else if(pid>0){
close(pipe_fd[0];
printf(“parent write Hello!n”);
if(write(pipe_fd[1],”Hello”,5)= =-1)
printf(“parent write err!n”);
close(pipe_fd[1]);
sleep(3);
wait(NULL);
exit(0);
}
return 0; }//main山东农业大学课程考试专用
7、请说明什么是僵尸进程,什么是孤儿进程?分析如下代码中父子进程的执行顺序,子进程的PCB由谁来回收?(5分)
main()
{
pid_t pid;
pid=fork();
if (pid<0) printf(“fork error!n”);
if (pid==0)
sleep(2);
if (pid>0) {
exit(0);}
}
注:考试期间试卷不允许拆开。 第 8 页 共 10 页 山东农业大学课程考试专用
2014 -2015 学年第2 学期
《Linux操作系统》A卷参考答案
一、 选择题(每题1分,共20分)
1~5 AADBD 6~10 CDBDB
11~15 CBCBC
二、应用题(35分)
16~20 DBCCA
1、 解释命令功能或根据功能写出命令(每题2分)
1) cat /dev/null>/var/log/dmesg
2) tar –cvf /home/user/*
3) cp /etc/passwd /home/mydir
4) 结束进程1234
5) 发送SIGQUIT信号给进程1234
6) 对于exer,增加所有用户的执行权限,取消用户组的读权限
7) 给文件passwd创建一个硬链接
8) 切换到用户家目录
9) 在文件/etc/passwd中寻找所有包含root的行
10) cat kkk 2>
2、#(1)使用/bin/bash解释脚本 (1分)
#(2)将位置变量1赋值给变量dir (1分)
#(3)如果dir所指为目录 (1分)
#(4)如果循环变量file所指是普通文件 (1分)
程序功能:若命令行参数是一个合法目录则显示该目录下所有普通文件的内容,否则显示错误的目录名信息。(1分)
3、 #!/bin/bash
for ((i=1;i<=50;i++))
do
mkdir -p /usrdata/user$i )
cd /usrdata
chmod 754 user$i
done
4、 #!/bin/bash
for file in *.txt
do
leftname=`basename $file .txt`
mv $file $
done
三、问答题(45分)
注:考试期间试卷不允许拆开。 第 9 页 共 10 页 山东农业大学课程考试专用
1、vi的工作模式有3种,分别是底行命令行模式、命令行模式和编辑模式
2、管道、信号量、信号、消息队列、共享内存(任意四种都可以),共享内存效率最高,其他通信方式都要经过4次复制,共享内存2次即可。
3、Fork 克隆父亲产生孩子进程,在父子进程空间内返回不同的值。
Wait阻塞调用它的进程,当其一个孩子进程进入死亡进入僵尸态后被唤醒
Execlp可将参数指定的用户程序装载进当前进程空间内,赋予进程新的工作,该调用成功后,进程原来的代码被覆盖将不会再运行。各2分
4、glob=7,var=89
glob=6 ,var=88(顺序无所谓,都正确)
子进程对变量所做的改变并不影响父进程中该变量的值,各自操作自己的数据空间。
5、
① 程序运行共产生4个进程(4分)
② 兄弟关系。fork发生时,执行该fork的进程内返回的是子进程的进程号,而被创建出的 子进程空间中返回值是0。第一次fork后,第1个儿子进程的空间中的pid1==0,继续执行第2次fork若得到的 pid2>0,说明仍是第1个儿子在运行。所以输出A:…的是第一个儿子;同理,pid1>0是在祖先进程里,祖先进程继续执行得到pid2==0,说明是祖先的第2个儿子。所以这两个进程是兄弟关系。两者并发运行,若没用同步控制语句,则谁先结束不确定。(6分)
6、程序运行结果parent write1 Hello!
5 numbers read from the pipe is Hello (3分)
分析:fork()调用后产生父子 两个进程,当子进程先执行时,sleep2秒钟,所以一定是父进程先执行,父进程关闭读口文件描述符pipe_fd[0],向管道中写入5个字符“Hello”,关闭写文件描述符pipe_fd[1],休眠3秒钟,子进程运行,关闭写文件描述符pipe_fd[1],从管道中读出数据,输出5 numbers
read from the pipe is Hello,关闭读文件描述符。(3分)
必须在fork()前调用pipe(),否则子进程将无法继承文件描述符。(2分)
wait(NULL)的作用是在子进程exit后回收子进程。(2分)
7、我们将一个已经终止、但是其父进程尚未对期进行善后处理(获取终止子进程的有关信息,释放它仍占用的资源)的进程称为僵死进程。
进程是在父进程fork后生成的,子进程将其终止状态返回给父进程,如果父进程在子进程前终止,我们称这种进程为孤儿进程。
程序中子进程sleep,先调用父进程,父进程接着退出了,子进程变成孤儿进程,由init收养。
注:考试期间试卷不允许拆开。 第 10 页 共 10 页
发布者:admin,转转请注明出处:http://www.yc00.com/web/1690957737a472836.html
评论列表(0条)