西北大学Linux期中上机考试.docx
- 文档编号:10529956
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:13
- 大小:572.80KB
西北大学Linux期中上机考试.docx
《西北大学Linux期中上机考试.docx》由会员分享,可在线阅读,更多相关《西北大学Linux期中上机考试.docx(13页珍藏版)》请在冰点文库上搜索。
西北大学Linux期中上机考试
Linux程序设计期中考试
一、给出完成下列各项功能所需要的Linux系统命令。
要求:
给出实现这一功能的完整命令;不能给出完整命令可以仅给出所需要的命令名称。
必须陈述利用了这个命令的哪个功能或选项。
(每题6分,共30分)
1、统计出由操作者用户创建并且正在运行的进程数目。
在计算机上给出相应的结果
答:
命令:
ps-ulenovo|wc-l
即:
使用列出系统进程的命令ps的-u选项列出操作者用户lenovo的所有进程,并将其输出作为统计字数命令wc的输入,使用wc的-l选项给出行数,即为操作者用户创建并且正在运行的进程数目。
结果:
2、假设命令cat/proc/net/arp的执行结果如下:
IPaddresstypeFlagsHWaddressMaskDevice
192.168.0.500x10x200:
AD:
32:
70:
00:
20*eth0
192.168.0.10x10x200:
0F:
3D:
1E:
4A:
89*eth0
192.168.0.210x10x200:
13:
20:
56:
75:
E7*eth0
192.168.0.380x10x200:
0F:
1F:
52:
EF:
F6*eth0
要求设计一个命令去掉上述输出中的表头,并且仅列出IP地址和MAC地址的对应关系,期望的输出结果如下所示。
192.168.0.5000:
AD:
32:
70:
00:
20
192.168.0.100:
0F:
3D:
1E:
4A:
89
192.168.0.2100:
13:
20:
56:
75:
E7
192.168.0.3800:
0F:
1F:
52:
EF:
F6
将计算机接入网络,从不同ip地址的计算机使用ping向该计算机发送数据包,先查看相应的/proc/net/arp文件,再要求设计一个命令去掉上述输出中的表头,并且仅列出IP地址和MAC地址的对应关系。
在计算机上给出相应的结果。
答:
过滤仅仅保留部分列,使用awk命令。
awk命令可以实现按行和按列过滤。
挑选行首符合正则表达式^[1-9]的行,符合条件的行打印出第一和第四列。
完整的命令为:
cat/proc/net/arpawk’/^[1-9]/{print$1$4}’
运行结果如下图:
3、程序文件fexc.c约有30行,保留了一个备份fexc0.c后,另个程序员在fexc.c中作了多处修改,如何找出他在原先程序的基础上作了哪些修改?
先构造fexc.c,再备份fexc.c得到fexc0.c,然后修改fexc.c。
在计算机上给出相应的运行结果。
答:
1)、首先用命令vi创建并准备编辑文件fexc.c,如下图所示:
2)、然后进行编辑,编辑完成后用命令:
wfexc0.c备份得到fexc0.c,即:
3)、然后修改fexc.c,如下图:
4)、然后用命令:
wq退出并保存fexc.c
5)、再用命令difffexc0.cfexc.c对两个文件进行比较,找出修改了的部分,比较结果如下图:
4、检索目录src以及其子孙目录中的所有文件名后缀为.c和.h文件,查找哪些文件中含有字符串TPDU,并列出在这文件中的行号。
在计算机上给出相应的运行结果。
答:
使用find命令和grep命令。
find命令可以在指定的目录树中查找满足某个条件的文件或目录,并对查找到的满足条件的对象执行一个动作。
指定查找条件为“文件名后缀为.c和.h”,动作为“查找哪些文件中含有字符串TPDU,并列出在这文件中的行号”,分别是find的-name和-exec选项。
完整的命令为:
findsrc–name‘*.[ch]’–execgrep–nTPDU/dev/null{}\;
运行结果如下图:
5、在命令行方式下,加入U盘,使用mount和umount命令对其进行操作;
在计算机上给出相应的运行结果。
答:
1、首先利用more/proc/partitions查看系统地硬盘和硬盘分区情况;
2、插入U盘后再用more/proc/partitions查看系统地硬盘和硬盘分区情况(如下图所示);
3、之后再执行命令#mkdirmnt/usb建立一个目录用来作挂节点;
4、然后再执行命令#mount/dev/sdb/mnt/usb挂接,之后便可以访问U盘了;
具体执行过程如下图所示:
二、简答题与编程题(共40分)
1、(10分)B-shell中的局部变量和环境变量有什么区别?
脚本文件myenv.sh的内容如下:
MAXSIZE=100000
exportMAXSIZE
执行./myenv.sh后,是否会在Shell中创建环境变量MAXSIZE?
为什么?
在计算机上给出相的运行结果。
答:
B-shell的局部变量和环境变量的区别在于新创建的进程是否继承这些变量。
局部变量不继承,环境变量被子进程继承。
在上述例子中,执行./myenv.sh后,会在子Shell中创建环境变量MAXSIZE,但是子shell终止后,环境变量被释放,不影响父进程,不会在当前shell中创建环境变量。
可以用在子进程和父进程中分别执行echo$MAXSIZE来输出MAXSIZE的值的情况来说明这一点,执行结果如下图:
2、(10分)下列的脚本程序从键盘输入三个整数A,B,C,并且求出A*(B+C)的值。
在划线出填入适当的内容,完成整个程序。
显式地标出你所添加的命令中必须有的空格和转义字符,并解释为什么必须这些空格和转义。
#!
/bin/sh
echo–n”InputA:
”;readA
echo–n”InputB:
”;readB
echo–n”InputC:
”;readC
V=
echo”A*(B+C)=$V”
在计算机上给出相应的运行结果。
答:
`expr$A\*\($B+$C\)`
由于星号和圆括号属于shell的元字符,所以前面增加反斜线(如上面红色部分),阻止shell对元字符的处理,将这些符号直接传递给expr命令。
上述命令一共需要7个空格(如上面黄色所示),空格起单词分界线的作用。
如果丢失了相应的空格,expr命令将无法得到正确的参数输入,导致expr无法按预期的功能工作。
运行结果如下图:
3、(10分)shell脚本程序countsh代码如下:
#!
/bin/bash
count=$#
cmd=echo
while[$count\>0]
do
cmd=”$cmd\$$count”
count=`expr$count–1`done
eval$cmd
问题:
(1)指出该脚本程序的错误;
(2)分析脚本程序countsh的功能;
(3)给出脚本程序countsh赋予文件主以执行权限的命令;
(4)给出./countshabcdefgh的输出结果
在计算机上给出相应的运行结果。
答:
(1)第一行“#!
/bin/bash”中“#”“!
”之间和“!
”和“/”之间均应有空格,即该行应该是:
“#!
/bin/bash”;第三行“while[$count>0]”中“[”后和“]”前均应有空格,“>”前应有“\”,即该行应该是:
“while[$count\>0]”;第七行“count=`expr$count–1`”中“=”前后不能有空格,即该行应该是:
“count=`expr$count–1`”。
(2)countsh的功能:
对命令行中所给的参数倒序输出。
(3)chmodu+xcountsh。
(4)输出结果为:
ghefcdab(如下图所示)
4、(此题共10分)假设在当前目录/home/test/src下执行如下命令,将会得到相应的结果:
~$tty
~$echo$?
然后设下面的脚本程序文件名为ttysh:
#!
/bin/bash
expr`tty`:
.\*
expr`tty`:
'/dev/tty\(.*\)'
termno=`expr\`tty\`:
'/dev/tty\\(.*\\)'`
echo$termno
expr`tty`:
/dev/tty\\(.\*\\\)
termno=`expr\`tty\`:
/dev/tty\\\\\(.\\*\\\\\\)`
echo$termno
unit=100
expr"$unit":
".*"
expr`pwd`:
'.*/\([^/]*\)$
问题:
(1)给出echo$?
的输出结果;
(2)找出脚本程序中的错误,给出正确的结果;
(3)将该脚本ttyt;
(4)分析该脚本程序ttysh的执行结果。
在计算机上给出相应的运行结果。
答:
(1)0;
(2)第二行“expr`tty`:
.\*”中冒号前后应该有空格,即为:
“expr`tty`:
.\*”;第三行“expr`tty`:
'/dev/tty\(.*\)'”中冒号前后应该有空格,即为:
“expr`tty`:
'/dev/tty\(.*\)'”;
第六行“expr`tty`:
/dev/tty\\(.\*\\\)”中tty后面应该有三个\,即为:
“expr`tty`:
/dev/tty\\\(.\*\\\);
所有等号左右都不能有空格;
最后一行后面少了一个‘,即应为:
expr`pwd`:
'.*/\([^/]*\)$'。
正确的程序应该是:
#!
/bin/bash
expr`tty`:
.\*
expr`tty`:
'/dev/tty\(.*\)'
termno=`expr\`tty\`:
'/dev/tty\\(.*\\)'
echo$termno
expr`tty`:
/dev/tty\\\(.\*\\\)
termno=`expr\`tty\`:
/dev/tty\\\\\\(.\\*\\\\\\)’`
echo$termno
unit=100
expr"$unit":
".*"
expr`pwd`:
'.*/\([^/]*\)$'
(3)chmodug+xttysh
(4)该脚本程序执行结果如下图,由输出的结果中第一行的10是tty所对应的字符串“/dev/pts/2”的长度;之后的几行空字符串是因为“/dev/pts/2”与后面的字符串不匹配,所以输出空字符串;之后输出的3是unit的值即100的长度3;然后输出的lenovo当前工作目录中的操作者用户的名字。
三、制作ramdisk,建立多引导分区,添加ramdisk引导,要求使用lilo命令进行lilo.config配置文件的重配置,并要求使用ramdisk对系统进行引导。
(30分)
在计算机上给出相应的运行结果。
答:
1.创建ramdisk挂载点
mkdirfrx
2.创建并初始化ramdisk,块大小为1k,总容量为4M
ddif=/dev/zeroof=ramdiskbs=1kcount=4096
3.格式化为ext2的文件系统
mke2fs-F-v-m0ramdisk
4.查看一下ramdisk的文件系统类型
fileramdisk
5.将ramdisk挂载到frx上
mount-oloopramdiskfrx/
具体的操作过程如下图所示:
之后便可以使用命令df–k来查看所建立的ramdisk,如下图所示:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西北大学 Linux 期中 上机 考试