我真的不理解奥,为什么会有给样卷不自带解析的,对答案都没得对,故整理一篇
样卷1
一、选择题
1、为了遍历shell脚本调用时传入的参数,需要在shell脚本中使用_____。
- A.
$#
表示参数的个数 - B.
S@
表示所有参数 - C.
$0
表示脚本名 - D.
$1
表示第一个参数
2、安装了带图形化界面的RedHatLinux系统,默认的运行级别为_____。
带图形化界面的RedHat Linux系统默认运行级别为5,选C
3、为了回到个人的home目录,可以执行_____。
cd ~
可以回到个人的home目录,选C
4、在 bash 中, 在一条命令后加入 “1>&2” 意味着_____。
表示标准输出重定向到错误输出,选D
5、Linux 启动时第一个启动的进程为init进程,它的进程号PID为_____。
init进程的PID为1,选B
6、假设执行cat/etc/passwd
命令后,发现以下记录信息:games:x:12:100:games:/usr/games:/sbin/nologin
,下列说法错误的是_____。
在/etc/passwd
文件中,记录格式为用户名:密码:用户ID:组ID:用户描述:家目录:登录Shell
,所以用户ID为12,组ID为100,home目录是/usr/games
,不能登录shell,选A
7、某系统已存在一块名为/dev/sda
的SCSI硬盘,现在再插入一个U盘, 该U盘的设备名可能为_____。
sda被占用,其他的数字从1开始数,所以可能是/dev/sdb1
,选C
8、为了查看端口占用情况,可以用_____命令。
- A.
netstat
命令用于显示网络连接、路由表、接口统计信息等,通过相关参数可以查看端口占用情况 - B.
ifconfig
主要用于配置和现实网络接口信息,如IP地址、子网掩码、MAC地址等 - C.
ping
命令用于测试网络连接,向目标主机发送ICMP数据包并等待响应 - D.
traceroute
用于追踪数据包在网络中的传输路径,显示从源主机到目标主机所经过的路由器列表
9、下列说法正确的是_____。
- A.开源软件不一定是免费的
- B.GPL协议允许公司销售自由软件,但销售时必须遵循GPL协议的规定
- C.F热额BSD是一个类Unix操作系统,不是Linux发行版本
- D.正确
10、不能查看系统资源信息的命令是_____。
- A.
du
命令用于查看磁盘使用空间,是查看系统资源信息(磁盘资源方面)的命令 - B.
free
命令用于显示系统内存的使用情况,包括物理内存、交换空间等信息,是查看系统资源信息(内存资源方面)的命令 - C.
shfs
这个命令在正常的Linux系统命令集中根本不存在 - D.
top
命令提供了实时动态地查看系统资源使用情况的功能
11、关于前台进程和后台进程,说法正确的是_____。
- A.后台进程才需要加
&
,前台直接执行即可 - B.正确
- C.后台进程在后台运行,不影响前台继续执行其他命令,不需要等待后台进程执行完毕后执行下一个命令
- D.
Ctrl+C
用于终止前台进程,后台进程需要用kill
命令加上进程ID等方式
12、下列命令中,不能实现文件保存的是_____。
- A.
:wq
表示保存文件并退出 - B.
:w
表示保存文件但不退出 - C.
:x
用法类似:wq
,只在某些情况下略有不同 - D.
:q!
表示不保存文件强制退出
13、下列命令中,没有导致vi工作模式切换的是_____。
- A.
:wq
会从编辑模式切换到命令模式然后退出 - B.
o
指在当前行下方打开新行并进入插入模式 - C.
gg
是跳转到文件开头,一直处于命令模式没有切换 - D.
?wq
是在vi中进行反向查找wq
,会从命令模式切换到查找模式
14、下列命令中,不能使vi进入插入模式的是_____。
- A.
a
用于在光标后进入插入模式 - B.
i
用于在光标前进入插入模式 - C.
o
用于在当前行下方插入新行并进入插入模式 - D.
r
用于替换当前字符,不进入插入模式
15、当字符串用单引号括起来时,shell将_____。
不解释特殊字符,选D
16、以下关于shell程序的说法正确的是_____。
- A.不同的shell解释器有不同的语法和特性
- B.shell程序执行效率相对较低,不适合用于时间紧迫型或任务器忙碌型任务
- C.正确
- D.如果程序文件本身有可执行权限就可以直接执行
17、将光盘/dev/hdc 卸载的命令是_____。
umount/dev/hdc
,选A
18、在利用gdb进行调试过程中,如果需要单步执行,且不进入函数内部,应该使用_____。
- A.
next
单步执行,不进入函数内部 - B.
step
单步执行,进入函数内部 - C.
run
运行程序 - D.
go
继续执行程序
19、下面关于less和more的说法错误的是_____。
- A.
less
和more
都具备分页查看文件内容的功能,用户可以逐页浏览文件。 - B.通常情况下,
less
在处理大容量文档时速度更快,并且具有更多功能,如支持上下键滚动浏览等,而more
相对简单。 - C.
less
允许用户使用上下方向键在文件中上下浏览,方便查看文件内容。 - D.
more
在查看文件时会将整个文档读入内存,这在处理大文件时可能会占用较多内存资源。
20、系统默认的_____用户对整个系统拥有完全的控制权。
- A.
administrator
是Windows里面的,Linux里面没有这个 - B.
guest
顾名思义肯定不是 - C.
root
是Linux默认的超级用户,具有最高权限 - D.
supervistor
这个默认用户不存在
二、简答题
1、解释软链接、硬链接以及复制三者之间的联系与区别。
- 联系:都跟文件操作相关
- 区别:
- 软链接就是快捷方式
- 硬链接是对内存的指针,只有把所有的硬链接删除才算是删除这个文件
- 复制就是内存复制了一份,两个东西是独立的
2、画出VFS的结构图,并说明VFS的功能与作用。
- 功能:提供统一的文件和文件系统操作系统,隐藏底层文件系统的差异
- 作用:隔离应用程序与底层文件系统,方便应用程序的兼容
3、以图解方式解释xinetd工作模式,并说明选择该工作模式的原则。
原则:系统中有多个不常用的网络服务或是安全性要求较高的话就用xinetd
三、编程题
1、编写一个shell程序可以完成以下执行过程。
首先是熟悉的多case,直到读入q结束,不然就是循环读数字,最后返回他们的和
#!/bin/bashwhile true
doecho "Input a list of number:"read numbersif [ "$numbers" = "q" ]; thenbreakfisum=0for num in $numbersdosum=$(($sum + $num))doneecho "the result is $sum"
done
2、编写一段shell程序实现以下功能。
熟悉的if-else开会
#!/bin/bashwhile true
doecho "Please input the student's score:"read scoreif [ $score -lt 0 ]; thenexit 0elif [ $score -le 60 ]; thenecho "Failed!"elif [ $score -le 69 ]; thenecho "Passed!"elif [ $score -le 79 ]; thenecho "Medium!"elif [ $score -le 89 ]; thenecho "Good!"elif [ $score -le 100 ]; thenecho "Excellent!"elseecho "Error score"fi
done
四、综合应用题
1、根据要求写出相应的操作命令,假设文件和目录已存在。
- 1)
ls -al /tmp
:ls
是列出目录内容的命令。-a
选项表示显示所有文件,包括隐藏文件(以.
开头的文件)。-l
选项以长格式显示文件信息,包括文件权限、所有者、大小、修改时间等。
- 2)
chmod 754 /tmp/a.txt
:chmod
用于修改文件权限。754
是权限的八进制表示,其中7
表示所有者具有读(4)、写(2)、执行(1)权限,5
表示同组用户具有读(4)和执行(1)权限,4
表示其他用户具有读(4)权限。
- 3)
chown mail:games /tmp/b.txt
:chown
用于更改文件所有者和所属组。mail
是要设置的文件所有者,games
是要设置的文件所属组。
- 4)
mv /tmp/c.txt /tmp/c.txt.bak
:mv
命令用于移动或重命名文件。- 这里将
/tmp/c.txt
重命名为/tmp/c.txt.bak
。
- 5)
date >> ~/d.txt
:date
命令用于显示当前系统时间。>>
是追加输出重定向符号,将当前时间追加到当前用户主目录下的d.txt
文件中。
- 6)
who | wc -l >> ~/d.txt
:who
命令用于显示当前登录系统的用户信息。wc -l
用于统计行数,这里统计who
命令输出的行数,即当前用户个数。>>
将统计结果追加到d.txt
文件。
- 7)
ln -s ~/d.txt /tmp/e.txt
:ln
命令用于创建链接。-s
选项表示创建软链接。~/d.txt
是源文件路径(当前用户主目录下的d.txt
文件),/tmp/e.txt
是软链接的目标路径。
- 8)
tar -cvf tmp.tar /tmp
:tar
是打包工具。-c
选项表示创建新的归档文件。-v
选项表示显示详细信息。-f
选项指定归档文件名,这里是tmp.tar
,最后指定要打包的目录/tmp
。
- 9)
ps -ef | grep vsftpd
:ps -ef
命令用于查看系统中所有进程的详细信息。grep vsftpd
用于过滤出包含vsftpd
的进程信息,即查看进程名为vsftpd
的进程信息。
- 10)
find /usr -name "*.xml"
:find
命令用于在指定目录下查找文件。/usr
是要查找的起始目录。-name "*.xml"
表示查找文件名以.xml
结尾的文件。
2、根据下面的依赖关系图,写出对应的makefile文件内容。
main: a.o main.o b.ogcc -o main a.o main.o b.oa.o: f1/a.c f1/a.hgcc -c f1/a.cmain.o: main.c f1/a.h f2/b.hgcc -c main.cb.o: f2/b.c f2/b.hgcc -c f2/b.c
3、系统需要定期做数据库的备份工作,请根据以上描述给出相应的crontab文件内容,不需要编写脚本内容。
# 每月第一天凌晨1点删除/oracle/tmp目录下的dmp文件
0 1 1 * * rm -f /oracle/tmp/*.dmp# 每月第一天凌晨2点30分以oracle用户执行导出数据脚本
30 2 1 * * su - oracle -c "/home/oracle/exportdata.sh"# 等待2小时(根据实际情况调整)后打包数据文件
50 4 1 * * tar -cvf /oracle/tmp/datafile.tar /oracle/tmp/*.dmp# 等待10分钟(根据实际情况调整)后移动压缩文件并修改权限
0 5 1 * * mv /oracle/tmp/datafile.tar /oracle/backup/ && chmod 400 /oracle/backup/datafile.tar
样卷2
一、选择题
1、通过指定gcc的_____选项,可以指定生成的可执行文件名。
-o
,选A
2、文件类型标识d表示的是_____。
- A.普通文件无前缀标识
- B.设备文件分为字符设备文件(用c表示)和块设备文件(用b表示)
- C.目录文件用d表示
- D.链接文件分为软链接(用l表示)和硬链接(无特殊标识)
3、为了要找到服务名和端口号的映射关系,需要查看_____。
- A.
/etc/hosts
文件主要用于本地主机名解析,将主机名映射到IP地址,它不涉及服务名和端口号的映射关系。 - B.
/etc/services
文件包含了常见网络服务与它们所使用端口号的映射关系,通过查看该文件可以找到服务名对应的端口号。 - C.
/etc/protocols
文件定义了系统支持的网络协议,如TCP、UDP等协议的相关信息,而不是服务名和端口号的映射。 - D.
/etc/sysconfig/network
文件主要用于配置网络相关的基本设置,如主机名、网关等,与服务名和端口号映射无关。
4、下面关于less和more的说法错误的是_____。
通常情况下,less
在处理大型文档时速度更快,并且提供了更多方便浏览的功能,如支持上下键滚动浏览等,而more
相对简单且速度较慢,选B。
5、下列说法,不正确的是_____。
普通用户除了可以访问自己的 Home 目录外,还可以访问系统中一些公共目录(如/tmp
等),并且在具有相应权限的情况下可以访问其他用户共享的资源等,选D。
6、假设执行cat/etc/passwd
命令后,发现以下记录信息: games:x:12:100:games:/usr/games:/sbin/nologin
,下列说法错误的是_____。
用户名:密码:用户 ID: 组 ID: 用户描述:家目录:登录 Shell
,故选A。
7、用于存放系统配置文件的目录是_____。
前面有原题,选C。
8、为了使系统启动时进入多用户的字符模式,需要把运行级别设定为_____。
选B。
9、不属于Linux系统中的文件类型的是_____。
Swap
文件不属于常规文件类型,选D。
10、下列选项中,不属于Linux特点的是_____。
Linux 具有多用户、设备独立性、可移植性和多任务等特点,选A。
11、为了要获取上一个命令的执行结果,需要用到_____。
选B。
12、假设文件权限属性是654,那么通过ls–l命令查看时,应该看到_____。
- 对于权限属性 654,其分解如下:
- 所有者权限为 6,即 4(读)+2(写),对应
rw-
。 - 同组用户权限为 5,即 4(读)+1(执行),对应
r-x
。 - 其他用户权限为 4,即 4(读),对应
r--
。
- 所有者权限为 6,即 4(读)+2(写),对应
选D。
13、系统的监控命令是_____。
选B。
14、某企业需要安装最新的内核稳定版本,应该安装_____。
当前的最新稳定版本是6.12.5(截止2024/12/19),可以在[The Linux Kernel Archives]查到,题目太古早已无参考价值,真遇到的话选中间是偶数的版本号最新的就行。
15、下列命令中,不能实现文件保存的是_____。
选D。
16、用于存放系统外部设备的目录是_____。
选A。
17、为了回到个人的home目录,可以执行_____。
选C。
18、在利用gdb进行调试过程中,如果需要单步执行,且不进入函数内部,应 该使用_____。
选A。
19、sdb2 表示的含义是_____。
选D。
20、关于文件系统的安装和卸载,下面描述错误的是_____。
外部设备可 mount 到其他合适目录,选B。
21、需要把ls
命令的输出追加到tmp
文件中,需要这样书写_____。
ls >> tmp
可将ls
命令输出追加到tmp
文件,选C。
22、关于前台进程和后台进程,说法正确的是_____。
选D。
23、要删除已经设定的crontab内容,可以使用的命令是_____。
crontab -r
用于删除已设定的 crontab 内容,选B。
24、能够启动vsftpd服务的命令是_____。
启动vsftpd
服务应使用/etc/rc.d/init.d/vsftpd start
(题中无完全正确选项)。
25、使vi显示行号的命令是_____。
:set number
使vi
显示行号,选D。
26、下列shell 对变量foo的操作,正确的是_____。
- A:为变量赋值的正确格式是
foo=apple
,不需要$
符号,A 选项错误。 - B:判断变量是否等于
abc
的正确格式是[ "$foo" = "abc" ]
,B 选项错误。 - C:测试变量是否为空串的正确格式是
[ -z "$foo" ]
,-f
用于测试文件是否存在等,C 选项错误。 - D:显示变量的值的正确格式是
echo $foo
,D 选项错误。
都是错的,题目太古早无参考价值
27、init 进程作为所有进程的父进程,它的进程号PID为_____。
选B。
28、下列说法不正确的是_____。
选C。
29、下面命令不能实现系统重启的是_____。
halt -f
不能实现系统重启,选D。
30、下列选项不属于Linux内核模块的是_____。
选C。
二、简答题
1、画出Linux操作系统的体系结构图,并说明每个模块的功能与联系。
2、画出VFS(虚拟文件系统)的结构图,并说明VFS的功能与作用。
见样卷1
3、说明软链接和硬链接的区别。
- 软链接
- 类似快捷方式,创建软链接使用
ln -s
命令,如ln -s /original/file /link/file
。 - 软链接可以跨文件系统创建,其文件大小较小,存储的是指向目标文件的路径。
- 当目标文件被删除时,软链接失效,变为一个无效的链接(指向不存在的文件路径)。
- 类似快捷方式,创建软链接使用
- 硬链接
- 通过 inode 链接到源文件,创建硬链接使用
ln
命令(不带-s
选项),如ln /original/file /link/file
。 - 不能跨文件系统,硬链接文件与源文件共享相同的 inode,文件大小与源文件相同。
- 只有当所有指向同一 inode 的硬链接(包括源文件本身,如果将源文件视为一个硬链接)都被删除时,文件才会被真正从磁盘上删除。
- 通过 inode 链接到源文件,创建硬链接使用
4、以图解方式解释xinetd工作模式和stand-alone工作模式,并说明选择不同工作 模式的原则。
见样卷1
三、综合应用题
1、根据下面makefile文件内容,画出目标依赖关系图。
2、根据要求写出相应的操作命令,假设文件和目录已存在。
- 以长格式的形式打印 /tmp 目录下的所有文件,包括隐藏文件
- 命令:
ls -al /tmp
- 解释:
ls
是列出目录内容的命令,-a
选项表示显示所有文件(包括隐藏文件,隐藏文件以.
开头),-l
选项以长格式显示文件信息,包括文件权限、硬链接数、所有者、所属组、文件大小、修改时间和文件名等。执行该命令后,会详细列出/tmp
目录下的所有文件信息。
- 命令:
- 创建一个名为 test 的用户,同时指定 shell 为 /bin/sh
- 命令:
useradd -s /bin/sh test
- 解释:
useradd
是用于创建新用户的命令,-s
选项用于指定用户的登录 shell,这里指定为/bin/sh
。执行该命令后,系统会创建名为test
的用户,并将其登录 shell 设置为/bin/sh
。可以通过查看/etc/passwd
文件来确认用户是否创建成功,例如使用cat /etc/passwd | grep test
命令查看与test
用户相关的记录。
- 命令:
- 把 /tmp/b.txt 文件的文件拥有者修改为 mail,同组用户修改为 games
- 命令:
chown mail:games /tmp/b.txt
- 解释:
chown
命令用于更改文件的所有者和所属组,mail
是要设置的新所有者,games
是要设置的新所属组,/tmp/b.txt
是要修改的文件路径。执行该命令后,/tmp/b.txt
文件的所有者将变为mail
,所属组变为games
。可以使用ls -l /tmp/b.txt
命令查看文件的所有者和所属组信息是否已更新。
- 命令:
- 把 /tmp/c.txt 重命名为 /tmp/c.txt.bak
- 命令:
mv /tmp/c.txt /tmp/c.txt.bak
- 解释:
mv
命令用于移动或重命名文件,这里将/tmp/c.txt
移动到/tmp/c.txt.bak
,实现了对c.txt
文件的重命名操作。执行命令后,原/tmp/c.txt
文件名将变为/tmp/c.txt.bak
。
- 命令:
- 把当前时间追加到当前用户主目录下的 d.txt 文件
- 命令:
date >> ~/d.txt
- 解释:
date
命令用于显示当前系统时间,>>
是输出重定向符号,表示将命令的输出追加到指定文件中。~/d.txt
表示当前用户主目录下的d.txt
文件。执行该命令后,当前时间会被追加到d.txt
文件的末尾。如果d.txt
文件不存在,该命令会创建一个新的d.txt
文件并写入当前时间。
- 命令:
- 把系统当前用户的个数追加到当前用户主目录下的 d.txt 文件
- 命令:
who | wc -l >> ~/d.txt
- 解释:
who
命令用于显示当前登录系统的用户信息,wc -l
用于统计行数,这里通过管道|
将who
命令的输出作为wc -l
命令的输入,统计出当前登录用户的个数。然后使用>>
将统计结果追加到当前用户主目录下的d.txt
文件中。执行该命令后,d.txt
文件中会新增一行显示当前系统用户的个数。
- 命令:
- 创建当前用户主目录下 d.txt 的软链接,链接到 /tmp/e.txt
- 命令:
ln -s ~/d.txt /tmp/e.txt
- 解释:
ln
命令用于创建链接,-s
选项表示创建软链接(符号链接)。~/d.txt
是源文件路径(当前用户主目录下的d.txt
文件),/tmp/e.txt
是软链接的目标路径。执行该命令后,在/tmp
目录下会创建一个名为e.txt
的软链接文件,它指向当前用户主目录下的d.txt
文件。可以通过查看/tmp
目录下e.txt
文件的详细信息(使用ls -l /tmp/e.txt
命令)来确认软链接是否创建成功,会显示其指向的源文件路径。
- 命令:
- 打包 /tmp 目录下的所有内容,生成名为 out.tar.gz 文件
- 命令:
tar -czvf out.tar.gz /tmp/*
- 解释:
tar
是一个强大的打包工具,-c
选项表示创建新的归档文件,-z
选项表示使用 gzip 压缩算法对归档文件进行压缩,-v
选项表示显示详细的打包过程信息,-f
选项用于指定归档文件名,这里指定为out.tar.gz
,/tmp/*
表示/tmp
目录下的所有文件和子目录。执行该命令后,会将/tmp
目录下的所有内容打包并压缩成out.tar.gz
文件,保存在当前目录下。可以使用ls
命令查看当前目录下是否生成了out.tar.gz
文件。
- 命令:
- 假设 xinetd 正在运行,打印 xinetd 的进程运行信息
- 命令:
ps -ef | grep xinetd
- 解释:
ps -ef
命令用于查看系统中所有进程的详细信息,包括进程的 PID(进程 ID)、PPID(父进程 ID)、用户、启动时间、命令等。grep xinetd
用于在ps -ef
的输出结果中过滤出包含xinetd
关键字的进程信息,即只显示与xinetd
相关的进程。执行该命令后,如果xinetd
正在运行,会显示其进程信息,例如进程 ID、所属用户、启动命令等。如果没有输出任何信息,则表示xinetd
没有在运行。
- 命令:
- 把 /tmp/a.txt 的文件权限设置为:拥有者具有读写执行权限,同组用户具有读和执行权限,其他用户具有读权限
- 命令:
chmod 754 /tmp/a.txt
- 解释:
chmod
命令用于更改文件或目录的权限。在 Linux 系统中,文件权限用数字表示,每个数字对应三个权限位(读、写、执行),分别对应所有者、同组用户和其他用户。数字与权限的对应关系为:4 表示读权限(r),2 表示写权限(w),1 表示执行权限(x)。7(4 + 2 + 1)表示所有者具有读写执行权限,5(4 + 1)表示同组用户具有读和执行权限,4 表示其他用户具有读权限。执行该命令后,/tmp/a.txt
文件的权限将被设置为指定的权限,可以使用ls -l /tmp/a.txt
命令查看文件权限是否已更改。
- 命令:
3、编写一个shell程序可以完成以下执行过程的需要。
见样卷1
4、日志备份
- 首先创建
backuplog.sh
脚本内容如下:#!/bin/bash# 获取上一个月的年份和月份 last_month=$(date -d "last month" +%Y%m)# 备份上一个月的日志文件到/var/tmp目录,生成log.bk后缀的备份文件 for i in {1..31} doday=$(printf "%02d" $i)log_file="/var/log/nginx/${last_month}${day}.log"if [ -f "$log_file" ]; thencp "$log_file" "/var/tmp/${last_month}${day}.log.bk"fi done# 等待1小时(这里简单使用sleep模拟,实际情况可能需要更精确的等待方式) sleep 3600# 打包备份文件成backup.tar.gz并保存到/var/tmp目录,然后删除原始备份文件 tar -czvf /var/tmp/backup.tar.gz /var/tmp/*.log.bk rm -f /var/tmp/*.log.bk
- 然后设置
crontab
任务来定时执行上述操作:- 编辑
admin
用户的crontab
(使用crontab -e
命令,如果是root
用户想编辑admin
用户的crontab
,可以使用crontab -u admin -e
)。 - 添加以下内容:
# 每月第一天凌晨1点30分执行备份脚本 30 1 1 * * /bin/bash /home/admin/backuplog.sh # 当天凌晨6点移动压缩文件 0 6 * * * mv /var/tmp/backup.tar.gz /var/log/backup/
- 编辑
- 解释:
- 在
backuplog.sh
脚本中,首先通过date -d "last month" +%Y%m
获取上一个月的年份和月份,然后循环备份上一个月每天可能存在的日志文件(如果存在)到/var/tmp
目录下并加上.log.bk
后缀。接着使用sleep 3600
模拟等待1小时,之后使用tar
命令将备份文件打包成backup.tar.gz
并保存到/var/tmp
目录,最后删除原始的.log.bk
后缀的备份文件。 - 在
crontab
设置中,第一行指定每月第一天凌晨1点30分执行backuplog.sh
脚本进行日志备份操作。第二行指定每天凌晨6点将/var/tmp
目录下的backup.tar.gz
文件移动到/var/log/backup
目录,实现日志备份文件的整理和归档。
- 在
样卷3
一、选择题
1、systemd 进程作为所有进程的父进程,它的进程号PID为_____。
选B。
2、下列说法正确的是_____。
选D。
3、用于存放系统管理员常用指令的目录是_____。
选B。
4、默认情况下创建了一个新用户,就会在_____目录下创建一个对应的用户主目录。
选B。
5、以下不属于内核空间的内容的是_____。
见样卷2简答第1题,C函数库属于用户空间,选A。
6、以下指令不能实现关机的是_____。
选C。
7、Linux 系统中的文件权限属性分为三组,其中第二组代表的是_____的权限属性。
选A。
8、假设文件权限属性是rw—xr-x,执行命令chmodu+x,g+r,o-x后,权限变为___。
在 CentOS 7 中,原始权限rw---xr-x
转换为数字表示为 605(所有者读写权限为 4 + 2 = 6,同组用户执行和读权限为 4 + 1 = 5,其他用户执行权限为 1)。执行chmod u+x
(所有者添加执行权限,变为 7),g+r
(同组用户添加读权限,变为 7),o-x
(其他用户去掉执行权限,变为 4)后,权限变为 754,选B。
9、执行_____命令可以回到上一级目录。
选B。
10、 能够设置vsftpd服务开机启动的命令是_____。
在 CentOS 7 中,systemctl enable vsftpd.service
用于设置vsftpd
服务开机启动。/etc/rc.d/init.d/network start
用于启动网络服务;systemctl start vsftpd.service
用于启动vsftpd
服务;ifup vsftdp
命令用法错误,应为ifup <网络接口名>
用于启动网络接口,选A。
11、 下面关于less和more命令说法正确的是_____。
less
和more
都可以实现分页查看功能,less
在打开大型文档时速度更快且提供上下浏览功能,more
会把整个文档读入内存(相比less
在处理大型文档时可能会更耗内存且速度较慢),选D。
12、 在vi的命令模式下,不能 导致工作模式切换的是_____。
dgg
是删除从文档开头到当前光标所在行的内容,不会切换工作模式,仍在命令模式,选A。
13、 sdb1 表示的含义是_____。
选C。
14、 在 bash 中, 在一条命令后加入 “2>&1” 意味着_____。
选C。
15、 假设执行cat/etc/passwd
命令后,发现以下记录信息: scau:x:1001:1002:scau:/usr/scau:/bin/bash
,下列说法正确的是_____。
选A。
16、关于前台进程和后台进程,说法错误的是_____。
选C。
17、 将一个前台进程变成后台进程,用到的命令是_____。
将一个前台进程变成后台进程,可在前台进程运行时按Ctrl + Z
暂停该进程,然后使用bg
命令将其放到后台继续运行,选B。
18、 crontab 文件的格式为:f1 f2 f3 f4 f5 program
,其中f5表示的是_____。
crontab
文件的格式中f5
表示一个星期中的天数(0 - 6,0 表示星期日),用于指定命令在星期几执行。f1
表示分钟,f2
表示小时,f3
表示一个月中的天数,f4
表示月份,选D。
19、 shell 程序中,为了要获取上一个命令的执行结果,需要用到_____。
选B。
20、 下列shell对变量foo的操作,正确的是_____。
选D。
二、简答题
1. 软连接和硬连接的区别
- 本质与存储内容
- 软连接:类似快捷方式,是一个独立的文件,有自己的 inode。文件大小较小,存储的是指向目标文件的路径。例如,创建一个软连接
ln -s /original/file /link/file
,软连接/link/file
中存储的是/original/file
的路径信息。 - 硬连接:通过 inode 链接到源文件,与源文件共享相同的 inode,不是独立文件。其文件大小与源文件相同,因为它实际上是源文件的一个额外链接。比如创建硬连接
ln /original/file /link/file
,/link/file
和/original/file
在磁盘上指向同一个 inode。
- 软连接:类似快捷方式,是一个独立的文件,有自己的 inode。文件大小较小,存储的是指向目标文件的路径。例如,创建一个软连接
- 跨文件系统支持
- 软连接:可以跨文件系统创建。例如,可以在一个挂载的外部存储设备(如 U 盘,可能是 FAT32 等文件系统)上创建指向本地硬盘(如 ext4 文件系统)上文件的软连接。
- 硬连接:不能跨文件系统。如果源文件和硬连接尝试跨不同的文件系统创建,会失败。例如,不能在一个 ext4 文件系统分区上的文件创建硬连接到 FAT32 文件系统分区上的文件。
- 对源文件删除的影响
- 软连接:当源文件被删除时,软连接失效,变为一个无效的链接(指向不存在的文件路径)。如果访问该软连接,会提示文件不存在错误(除非重新创建源文件且路径相同)。
- 硬连接:只有当所有指向同一 inode 的硬链接(包括源文件本身,如果将源文件视为一个硬链接)都被删除时,文件才会被真正从磁盘上删除。只要还有一个硬连接存在,文件的数据就仍然保留在磁盘上。
- 创建命令与方式
- 软连接:创建使用
ln -s
命令,语法为ln -s [源文件路径] [软连接路径]
。如前面提到的ln -s /original/file /link/file
。 - 硬连接:创建使用
ln
命令(不带-s
选项),语法为ln [源文件路径] [硬连接路径]
。
- 软连接:创建使用
- 链接计数
- 软连接:不增加源文件的链接计数。源文件的链接计数只与硬连接的数量有关,软连接的创建和删除不会影响源文件的链接计数。
- 硬连接:会增加源文件的链接计数。每创建一个硬连接,源文件的链接计数就会加 1,表示有多少个文件名指向同一个 inode。例如,一个文件初始链接计数为 1,创建一个硬连接后,链接计数变为 2。
2. VI 的模式及切换
- 命令模式(Command Mode)
- 特点:启动
vi
后默认进入命令模式,在该模式下可以执行各种命令操作,通过特定的按键组合来移动光标、删除文本、复制粘贴、查找替换等。 - 操作示例:
- 移动光标:
h
左移一个字符,j
下移一行,k
上移一行,l
右移一个字符;Ctrl + f
向前翻一页,Ctrl + b
向后翻一页;0
(数字零)移动到当前行首,$
移动到当前行尾。 - 删除文本:
x
删除当前光标字符,dd
删除当前行,dw
删除当前光标所在单词。 - 复制粘贴:
yy
复制当前行,p
粘贴(在当前光标下方粘贴,如果要在上方粘贴,使用P
),3yy
复制当前行及下面两行(数字表示复制的行数)。 - 查找替换:
/
进入查找模式,输入要查找的字符串后按回车键进行查找;:%s/old/new/g
在整个文件中替换old
为new
(%
表示整个文件,s
表示替换,g
表示全局替换,如果不加g
,只替换每行的第一个匹配项)。
- 移动光标:
- 切换到其他模式:
- 插入模式:按
i
(在当前光标位置插入)、I
(在当前光标所在行首插入)、a
(在当前光标后插入)、A
(在当前光标所在行尾插入)、o
(在当前光标所在行下方插入新行并进入插入模式)、O
(在当前光标所在行上方插入新行并进入插入模式)等键可进入插入模式。 - 末行模式:按
:
进入末行模式。
- 插入模式:按
- 特点:启动
- 插入模式(Insert Mode)
- 特点:用于输入文本内容,在该模式下输入的字符会直接插入到文件中。
- 切换到其他模式:按
Esc
键可从插入模式回到命令模式。
- 末行模式(Last Line Mode)
- 特点:可以执行一些文件操作、设置
vi
的参数、执行外部命令等。 - 操作示例:
- 文件保存与退出:
:w
保存文件但不退出vi
,:q
退出vi
(如果文件有未保存修改,会提示),:wq
或:x
保存并退出vi
,:q!
不保存强制退出vi
。 - 设置参数:
:set nu
显示行号,:set nonu
取消显示行号,:set tabstop=4
设置制表符宽度为 4 个字符(默认可能是 8 个字符)等。 - 执行外部命令:
:! ls
在不退出vi
的情况下执行ls
命令,查看当前目录文件列表,执行完后按回车键回到vi
。
- 文件保存与退出:
- 切换到其他模式:按
Esc
键可从末行模式回到命令模式。
- 特点:可以执行一些文件操作、设置
3. xinetd 工作模式图解及选择原则
见样卷1
4. X Window 组成部分的功能与作用(简单描述,图解可手绘或使用专业绘图工具制作)
- X Server
- 功能:负责管理硬件设备,包括显示器、键盘、鼠标等。它直接与硬件交互,接收来自硬件的输入事件(如键盘按键、鼠标移动和点击等),并将图形输出显示到屏幕上。例如,当用户按下键盘上的一个键,X Server 会捕获这个事件并传递给相应的程序处理;同时,它会将应用程序请求绘制的图形(如窗口、菜单、文本等)显示在显示器上。
- 作用:是 X Window 系统与硬件交互的底层组件,为其他组件提供图形显示和输入处理的基础服务。没有 X Server,X Client 应用程序无法与硬件设备进行通信,也就无法实现图形界面的显示和用户输入的处理。
- X Client
- 功能:是应用程序,如文本编辑器、浏览器、图形设计软件等。它们向 X Server 发送绘图请求(如绘制窗口的形状、显示文本内容、绘制图形元素等),并接收用户输入事件(通过 X Server 转发)。例如,浏览器应用程序会向 X Server 请求绘制网页内容的窗口,当用户在浏览器中点击链接时,X Server 将点击事件传递给浏览器应用程序,浏览器根据事件进行相应的页面加载等操作。
- 作用:多个 X Client 可以同时运行并共享 X Server 提供的显示资源,每个 X Client 专注于实现自身的功能逻辑,通过与 X Server 的通信来实现图形界面的显示和交互功能,从而为用户提供各种丰富的应用服务。
- X Protocol
- 功能:定义了 X Server 和 X Client 之间通信的规则和消息格式。它规定了如何发送绘图请求(如请求创建窗口、绘制线条、填充颜色等)、处理输入事件(如键盘事件、鼠标事件的格式和传递方式)、管理窗口(如窗口的创建、移动、大小调整等操作的协议规范)等操作。例如,当 X Client 想要绘制一个矩形时,它会按照 X Protocol 规定的消息格式向 X Server 发送绘图请求,X Server 根据协议解析请求并在屏幕上绘制出矩形。
- 作用:确保 X Server 和 X Client 能够正确地交互数据,使得不同的 X Client 和 X Server 能够相互协作,实现统一的图形界面环境。无论使用何种编程语言开发 X Client 应用程序,只要遵循 X Protocol,就可以在支持 X Window 系统的环境中正常运行并与 X Server 进行通信。
- Window Manager
- 功能:负责管理窗口的布局、外观和操作。它决定了窗口在屏幕上的位置、大小、堆叠顺序(哪个窗口在前面显示),提供窗口的装饰(如标题栏、边框等),处理窗口的移动、大小调整、最大化、最小化、关闭等操作。例如,用户通过鼠标拖动窗口标题栏来移动窗口时,Window Manager 会捕获这个操作并相应地调整窗口的位置;当用户点击窗口的最大化按钮时,Window Manager 会将窗口扩展到全屏显示。
- 作用:提供了用户与多个窗口交互的界面,使用户可以方便地操作和管理运行中的 X Client 应用程序窗口,提高用户操作的便利性和效率,使得用户可以在多窗口环境中高效地工作和使用各种应用程序。
5. gdb 调试过程中常用指令及作用
- run(r)
- 作用:用于启动被调试的程序,程序会从
main
函数开始执行,直到遇到断点或程序结束。例如,调试一个 C 程序时,在设置好断点后,使用run
命令开始执行程序,程序会正常运行直到停在第一个断点处,此时可以查看程序的运行状态。
- 作用:用于启动被调试的程序,程序会从
- break(b)
- 作用:设置断点,可以根据函数名、行号或条件表达式来设置断点,使程序在指定位置暂停执行,方便查看程序状态。
- 示例:
b main
:在main
函数入口处设置断点,程序执行到main
函数开始时会暂停。b file.c:10
:在file.c
文件的第 10 行设置断点,当程序执行到该行代码时会暂停。b function_name if variable == value
:当满足条件variable == value
时,在function_name
函数内暂停程序,可用于在特定条件下调试程序。
- next(n)
- 作用:单步执行程序,但不进入函数内部,如果遇到函数调用,会将函数视为一条语句执行完,然后停在下一行代码。例如,在调试一个包含多个函数调用的程序时,使用
next
可以快速跳过函数调用,专注于当前函数的执行流程。
- 作用:单步执行程序,但不进入函数内部,如果遇到函数调用,会将函数视为一条语句执行完,然后停在下一行代码。例如,在调试一个包含多个函数调用的程序时,使用
- step(s)
- 作用:单步执行程序,遇到函数调用时会进入函数内部,继续单步执行函数内的代码。这对于深入调试函数内部逻辑非常有用,可跟踪函数内的每一步操作,查看函数参数传递、局部变量变化等情况。
- continue(c)
- 作用:从当前断点处继续执行程序,直到遇到下一个断点或程序结束。如果在调试过程中已经查看了当前断点处的程序状态,想要继续运行程序到下一个断点,可以使用
continue
命令。
- 作用:从当前断点处继续执行程序,直到遇到下一个断点或程序结束。如果在调试过程中已经查看了当前断点处的程序状态,想要继续运行程序到下一个断点,可以使用
- print(p)
- 作用:用于查看变量或表达式的值。例如,在程序暂停时,可以使用
print variable_name
查看变量variable_name
的值,也可以使用print expression
查看表达式(如a + b
)的计算结果,帮助分析程序运行过程中数据的变化情况。
- 作用:用于查看变量或表达式的值。例如,在程序暂停时,可以使用
- backtrace(bt)
- 作用:打印当前函数调用栈的信息,显示函数的调用顺序和参数,帮助分析程序的执行流程和定位问题所在的函数调用层次。例如,当程序出现错误时,通过
backtrace
可以查看程序是如何调用到当前函数的,以及每个函数的参数传递情况,有助于快速定位问题根源。
- 作用:打印当前函数调用栈的信息,显示函数的调用顺序和参数,帮助分析程序的执行流程和定位问题所在的函数调用层次。例如,当程序出现错误时,通过
- quit(q)
- 作用:退出 gdb 调试环境。在调试结束后,使用
quit
命令退出 gdb。如果程序还有未处理的状态(如正在运行或有未保存的调试设置),gdb 会提示是否确认退出。
- 作用:退出 gdb 调试环境。在调试结束后,使用
三、代码题
1、代码阅读题
- 第一个
case
分支[1 - 5]
:- 作用:当用户输入的年龄在1到5岁这个区间(包含1和5)时,执行该分支内的语句。即输出
You belong to the Preschool class.
,提示用户属于学前班级。
- 作用:当用户输入的年龄在1到5岁这个区间(包含1和5)时,执行该分支内的语句。即输出
- 第二个
case
分支[6 - 10]
:- 作用:当用户输入的年龄在6到10岁这个区间(包含6和10)时,输出
You belong to the Elementary School class.
,告知用户属于小学班级。
- 作用:当用户输入的年龄在6到10岁这个区间(包含6和10)时,输出
- 第三个
case
分支[11 - 14]
:- 作用:若用户输入年龄在11到14岁之间(包含11和14),则输出
You belong to the Middle School class.
,表明用户属于初中班级。
- 作用:若用户输入年龄在11到14岁之间(包含11和14),则输出
- 第四个
case
分支[15 - 18]
:- 作用:对于输入年龄在15到18岁范围内(包含15和18)的情况,输出
You belong to the High School class.
,说明用户属于高中班级。
- 作用:对于输入年龄在15到18岁范围内(包含15和18)的情况,输出
- 最后一个
*
分支:- 作用:当用户输入的年龄不在前面任何一个指定的区间范围内时,执行该分支。输出
You are not in the specified age range for a school class.
,提示用户输入的年龄不在学校班级的指定年龄区间内。
- 作用:当用户输入的年龄不在前面任何一个指定的区间范围内时,执行该分支。输出
2、编写一个shell程序实现简单的加减乘除运算。
#!/bin/bash# 检查输入参数数量是否为2
if [ $# -ne 2 ]; thenecho "UsageError"exit 1
fi# 检查输入参数是否小于1000
if [ $1 -ge 1000 ] || [ $2 -ge 1000 ]; thenecho "UsageError"exit 1
fi# 使用expr命令计算乘法结果并输出
result=$(expr $1 \* $2)
echo "$1 * $2 = $result"
3、编写⼀个shell程序实现以下功能。
#!/bin/bash# 定义累乘函数
factorial() {local result=1for (( i = 1; i <= $1; i++ )); doresult=$(($result * $i))doneecho $result
}while true
doecho "Input a list of number:"read numbersif [ "$numbers" = "q" ]; thenbreakfiproduct=1for num in $numbersdoproduct=$(($product * $(factorial $num))))doneecho "The result is $product"
done
四、综合应用题
1、根据要求写出相应的操作命令(假设文件和目录已存在)
- 统计/dev目录下有多少个socket文件
- 命令:
find /dev -type s | wc -l
- 解释:
find /dev -type s
用于查找/dev
目录下类型为socket
的文件,wc -l
用于统计行数,即socket
文件的数量。
- 命令:
- 创建一个名为usertest的用户,同时指定shell为/bin/sh
- 命令:
useradd -s /bin/sh usertest
- 解释:
useradd
用于添加用户,-s
选项用于指定用户的登录shell。
- 命令:
- 把/etc/passwd中包含root的行追加到/tmp/c.txt文件中
- 命令:
grep root /etc/passwd >> /tmp/c.txt
- 解释:
grep root /etc/passwd
用于查找/etc/passwd
文件中包含root
的行,>>
将结果追加到/tmp/c.txt
文件。
- 命令:
- 把/etc/passwd的前5行追加到/tmp/a.txt文件中
- 命令:
head -5 /etc/passwd >> /tmp/a.txt
- 解释:
head -5
用于获取文件的前5行,>>
将结果追加到/tmp/a.txt
文件。
- 命令:
- 查找根目录下包含common路径的所有普通文件并输出到终端
- 命令:
find / -type f -path "*/common/*" -print
- 解释:
find /
从根目录开始查找,-type f
表示查找普通文件,-path "*/common/*"
表示路径中包含common
的文件,-print
将结果输出到终端。
- 命令:
- 打包/tmp目录下的所有内容,生成名为out.tar文件
- 命令:
tar -cvf out.tar /tmp/*
- 解释:
tar -cvf
用于创建打包文件,out.tar
是打包后的文件名,/tmp/*
表示/tmp
目录下的所有内容。
- 命令:
- 假设vsftpd正在运行,打印vsftpd的进程运行信息
- 命令:
ps -ef | grep vsftpd
- 解释:
ps -ef
用于列出所有进程信息,grep vsftpd
用于筛选出与vsftpd
相关的进程信息。
- 命令:
- 把/tmp/a.txt的文件权限设置为:拥有者具有读写执行权限,同组用户具有读和执行权限,其他用户具有读权限
- 命令:
chmod 754 /tmp/a.txt
- 解释:在Linux权限表示中,7表示拥有者具有读写执行权限(4 + 2+ 1),5表示同组用户具有读和执行权限(4 + 1),4表示其他用户具有读权限。
- 命令:
- 写出满足以下要求的crontab内容: 每月的星期三晚上9点 - 11点,执行/usr/bin/run脚本(假设脚本已存在且可执行)
- 命令:
0 21 - 23 * * 3 /usr/bin/run
- 解释:在
crontab
中,从左到右依次表示分钟、小时、日期、月份、星期几、要执行的命令。这里表示每月中星期三(星期几用数字3表示)的21点到23点(晚上9点到11点),每分钟(0分钟)执行一次/usr/bin/run
脚本。
- 命令:
- 把/var/log目录下文件size最大的文件,以长格式的方式,输出到/tmp/bb.txt文件中
- 命令:
ls -lS /var/log | head -1 > /tmp/bb.txt
- 解释:
ls -lS
以长格式并按文件大小排序(从大到小)列出/var/log
目录下的文件,head -1
获取第一行(即文件size最大的文件信息),>
将结果输出到/tmp/bb.txt
文件。
- 命令:
2、根据下面的依赖关系图,写出对应的makefile文件内容(假设mainfile与 hello.c 在同一层目录下)。
# 定义编译器和编译选项
CC = gcc
CFLAGS = -Wall# 定义目标文件和源文件
OBJS = hello.o hi.o hey.o
SRCS = hello.c hi.c hey.c# 定义可执行文件
hello: $(OBJS)$(CC) $(OBJS) -o hellohello.o: hello.c$(CC) $(CFLAGS) -c hello.c -o hello.ohi.o: hi.c$(CC) $(CFLAGS) -c hi.c -o hi.ohey.o: hey.c$(CC) $(CFLAGS) -c hey.c -o hey.o# 清理规则
clean:rm -f $(OBJS) hello
3、定时统计访问数据。
#!/bin/bash# 获取当前日期
current_date=$(date +%Y-%m-%d)# 定义输出文件名
output_file="${current_date}.out"# 使用关联数组来统计每个id的访问次数
declare -A id_count# 读取日志文件
while IFS='#' read -r id time runner command result; doif [ -z "${id_count[$id]}" ]; thenid_count[$id]=0fi((id_count[$id]++))
done < MyOut.log# 将统计结果输出到文件
for id in "${!id_count[@]}"; doecho "${id}#${id_count[$id]}" >> /tmp/${output_file}
done
将这个写入脚本中即可