Linux 基础《简答》题库及答案

文章目录

简答题库

1.简述DNS进行正向域名解析的过程

正向解析就是将域名解析成对应的IP的过程,以解析www.sina.com.cn为例。计算机想访问www.sina.com.cn,就知道www.sina.com.cn的IP地址,一般情况下会查询本地DNS服务器,如果本地DNS服务器有该对应关系,则返回给计算机,如果没有,则进行迭代查询,本地DNS服务器会向根DNS服务器发出查询,根DNS服务器会给出cn域名服务器的地址;本地DNS服务器再向cn域名服务器发出查询,cn域名服务器会给出com.cn域名服务器的IP地址;本地DNS服务器再向com.cn服务器发出查询,com.cn服务器会给出sina.com.cn域名服务器的IP地址,本地DNS服务器向sina.com.cn域名服务器发出查询,sina.com.cn域名服务器会给出www.sina.com.cn服务器的IP地址,本地DNS服务器收到对应的IP地址并缓存下来,然后把结果返回给计算机,计算机获得www.sina.com.cn的IP地址即可访问。

2.简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?

ftp有两种登录方式:匿名登录和授权登录。使用匿名登录时,用户名为:anonymous,密码为:任何合法email地址;使用授权登录时,用户名为用户在远程系统中的用户帐号,密码为用户在远程系统中的用户密码。 区别:使用匿名登录只能访问ftp目录下的资源,默认配置下只能下载;而授权登录访问的权限大于匿名登录,且上载、下载均可。

3.计算机网卡的网络配置信息必须手动设置吗?如何减轻管理员配置的工作量?

不是。可以使用DHCP自动配置计算机的网络参数。

4.什么是域名解析?

域名解析就是将域名映射为主机IP地址的过程。

5.简述FTP服务器的工作模式

FTP服务器的工作模式分为主动模式和被动模式。当工作在主动模式时,客户端首先发起连接请求,与服务器的21号端口建立控制连接,连接成功后,客户端方借此发送命令。若客户端需要传输数据,客户端会通过已建立的连接通道向服务器发送消息,告知服务器客户端中接收数据的端口,之后服务器通过20号端口连接到客户端指定的端口并传输数据。当FTP工作在被动模式下时,客户端首先发起连接请求,与服务器的21号端口建立控制连接,之后仍由客户端发送信息,请求与服务器建立数据连接,服务器接收到此请求后,会随机打开一个高端端口,并将该端口号告知客户端,此时客户端与服务器的该端口再建立数据连接,通过该通道进行数据传递。

6.简述在chroot模式下如何实现匿名用户的上传功能

登入目录的写权限不能与chroot限制并存,所以直接不全登入目录的权限会导致用户无法连接服务器。通常解决方式为:在登入目录下创建新目录,更改其所属组和所有者,将其权限设置为777,让匿名用户在此目录中间接实现上传功能。

7.简述如何禁止指定用户登陆FTP服务器

将指定用户的用户名添加到用户控制配置文件ftpusers中即可。

8.请简述一下你对内核的理解

内核(Kernel)是操作系统的核心,它是一个系统软件,负责管理系统中的进程、内存、设备驱动程序、文件和网络等。内核本质上就是用C语言编写的一个程序,只是这个程序比普通的C语言程序功能更强大,它可以调度硬件资源完成各种各样的任务。Linux内核主要由以下部分组成:进程管理(process management)、定时器(timer)、中断管理(interrupt management)、内存管理(memory management)、模块管理(module management)、虚拟文件系统接口(VFS layer)、文件系统(file system)、设备驱动程序(device driver)、进程间通信(inter-process communication)、网络管理(network management)、系统启动(system init)等。在操作系统中,内核独立于普通应用程序,它工作在内核空间。内核既要管理应用程序的运行,又要管理硬件设备的运作。

9.请简述一下单内核与微内核的概念以及它们之间的区别

单内核是个独立的大进程,通常以单个静态二进制文件的形式存放于磁盘上。所有的内核模块都在这个大内核所在的地址空间中运行,模块间的通信是通过直接调用其他模块中的函数来实现的。而微内核并不作为一个单独的大进程来实现,它的功能被划分为多个独立的进程,所有的进程都保持独立并运行在各自的地址空间上,它们之间的通信是通过消息传递实现的。进程的独立有效地避免了一个进程故障而祸及到另一个服务器,而且,模块化的系统允许一个进程为了另一个进程而换出。

10.请简述一下Linux是如何采用双树系统管理内核版本的

双树系统包括稳定树(stable tree)和开发树(unstable tree),即不稳定树。一些新特性、实验性改进等都在属于开发树的内核中进行,如果在开发树中所做的改进也可以应用于稳定树,那么在开发树中完成测试之后,就在稳定树中进行相同的改进。一旦开发树经过了足够的发展,开发树就会成为稳定树,它们的不同会体现在内核的版本号中,内核版本的命名格式为A.B.C,数字A是内核主版本号,版本号只有在代码和内核的概念有重大改变的时候才会改变,数字B是内核次版本号,主版本号根据传统的“奇-偶”系统版本号来分配:奇数为开发版本,偶数为稳定版本。数字C是内核修订版本号,修订版本号表示内核修改的次数,它在内核增加安全补丁、修复Bug、实现新的特性或驱动时都会改变。

11.请简述一下内核模块机制的优缺点

  • 优点:内核模块大大扩展了内核的功能,使得内核更加灵活,在修改内核时,不必重新编译整个内核,只要编译相应的模块,然后将模块加载到内核即可,而且模块可以不依赖于某一个固定的硬件平台,具有良好的可移植性。模块代码一旦被链接到内核,它的作用域就和静态链接的内核目标代码是一样的。

  • 缺点:在加载内核模块时,由于内核所占用的内存并不会被释放,所以链接进内核的模块会给整个系统带来一定的性能和内存利用方面的损失,而且加载到内核的模块就成为了内核的一部分,模块如果使用不当会导致整个系统的崩溃。为了让模块能访问所有的内核资源,内核模块中必须维护一个内核符号表(kernel symbol table),并在加载和卸载模块时相应地修改符号表。一个模块可能会用到其它模块的功能,所以内核要维护模块之间的依赖性,这无疑又增加了内核的负担。

12.请简述一下Shell中常用的通配符及它们的含义

  • “*”符号:与零个或多个字符匹配;

  • “?”符号:与任何单个字符匹配;

  • “[]”符号:与[]中的任一字符相匹配;

  • “[!]”符号:与[]之外的任一字符匹配。

13.请简述一下Shell中的while与do…while的区别

  1. sed在处理文本数据时,它会将读取到的数据复制到缓冲区,在缓冲区中对数据进行处理,处理完成之后再输出到屏幕;awk在读取分析数据时,从头到尾逐行扫描文件内容,寻找与指定模式匹配的行,并对匹配出的文本行进行处理。

  2. sed通常按“行”进行操作;awk通常按“列”进行操作。

  3. sed是非交互式文本处理工具,适合对文本进行编辑;awk是一种文本处理语言,适合对文本进行抽取处理。

14.请简述一下sed和awk的区别

  • sed(stream editor)是一个非交互式的文本处理命令,它可以对文本文件和标准输入进行编辑。标准输入可以来自键盘、文件重定向、字符串、变量,甚至来自管道的文件。sed在处理文本数据时,它会将读取到的数据复制到缓冲区,在缓冲区中对数据进行处理,处理完成之后再输出到屏幕。在处理完一段文本之后,sed会接着处理下一段,这样不断重复,直到文件末尾。当编辑命令太过复杂、文件太大、文本处理需要执行多个函数时都可以使用sed命令对文本数据进行处理。与Vi等其它文本编辑器相比,sed可以一次性处理所有的编辑任务,可极大地提升工作效率,节约用户时间。

  • awk在读取分析数据时,从头到尾逐行扫描文件内容,寻找与指定模式匹配的行,并对匹配出的文本行进行处理。简而言之,awk的工作流程分为模式匹配和处理过程两步。在匹配的过程中,如果没有指定匹配模式,则默认匹配所有数据。awk每读取一行数据,都会对比该行是否与给定的模式相匹配,如果匹配,则对数据进行处理,否则不作任何处理。如果没有指定如何处理内容,则把匹配到的内容打印到终端。awk定义了两个特殊的模式:BEGIN和END。BEGIN放置在读取数据之前执行,标识数据读取即将开始;END放置在读取数据结束之后执行,标识数据读取已经完毕。

15.在Shell中,如何查找命令历史记录

Shell提供了四种方法查找命令行历史记录,具体如下所示。

  1. 查找家目录下的.history文件,Shell在执行命令时将命令的操作记录保存在了用户家目录下的.bash_history文件中,通过这个文件可以查询Shell命令的执行历史。

  2. 使用history命令,Shell提供了history命令用于查询命令行历史记录。

  3. 使用键盘上下方向键,通过键盘上的上下方向键可以逐条查询命令行历史记录。如果要重新执行不久前执行的命令,使用上下方向键查找更方便。

  4. 使用快捷键【Ctrl+R】,按下此快捷键,会出现(reverse-i-search)提示,输入之前执行过的命令,每当输入一个字符,终端都会滚动显示历史命令,当显示到想要查找的命令时直接【Enter】键就执行了该命令。不想查找时,按【Esc】或方向键退出查找。

16.请简述一下Shell的特殊变量及它们的含义

  • $#:传递到脚本的参数数量。

  • $*和$@:传递到脚本的所有参数。

  • $?:命令退出状态,0表示正常退出,非0表示异常退出。

  • $$:表示进程的PID。

17.请简述一下break与continue的作用及它们之间的区别

break与continue都是Shell提供的循环控制符,用于退出循环。break用于强行退出循环,它会忽略循环条件的作用,退出循环之后,它接着执行循环之外的命令。continue用于终止本次循环,接着执行下一次循环,它不会退出循环,只是跳过本次循环,循环会按照循环条件正常退出。

18.编写一个脚本,在一个目录下的所有文件(不包含目录)后面添加.bak后缀

#! /bin/bash

for f in `find . -type f`

do mv $f $f.bak

done

19.编写一个脚本,将当前目录下大于100k的文件移动到/tmp/目录下

#! /bin/bash

for f in `find . -type f -size +100k`

do mv $f /tmp/

done

20.编写一个脚本,获取本机的HOSTNAME、IP地址以及DNS地址

#! /bin/bash

hostname=`hostname`

echo "hostname: " $hostname

ip=`/sbin/ifconfig -a | grep 'inet addr' | awk -F ':' '{print $2}' | awk '{print $1}'`

for i in $ip

do

echo "`ifconfig | grep -B1 "$i" | grep -v 'inet addr' | awk '{print $1}'` "$i""

done

DNS=`cat /etc/resolv.conf | grep nameserver | grep -v '#'`

echo $DNS

21.请列出Ansible的几个特点

  • 部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;

  • 默认通过SSH(Secure Shell)协议对设备进行管理;

  • 配置简单、功能强大、扩展性强;

  • 支持API及自定义模块,可通过Python轻松扩展;

  • 通过playbook来定制强大的配置、状态管理;

  • 对云计算平台、大数据有很好的支持;

  • 提供一个功能强大、可操作性强的Web管理界面和REST(REpresentational State Transfer,表述性状态转移) API接口——AWX平台。

22.请简述一下你对SaltStack中Master-Minion架构的理解

在Master-Minion架构中,主要有三个节点:Master、Minion、Syndic。Master是服务端,它负责调用命令,让Minion完成相应操作,来实现集中化操作。Minion是客户端,它负责执行Master下发的命令,完成实际的运维任务。Syndic是一个中间节点,负责解决网络拓扑中的二级代理问题,它需要在服务器主机上运行Master,并让子网下的Minion指向自己,即伪装成Master。Syndic可以没有,如果有Syndic,则Master通过Syndic对Minion进行管理。Master-Minion架构可以进行多级扩展。

23.编写一个脚本,判断主机中的Apache服务是否开启,如果开启就在输出“activing”,如果没有开启就输出“no activing”

#!/bin/bash

state=$(nmap -sT 192.168.175.150 | grep tcp | grep http | awk '{print $2}')

# 使用nmap命令扫描服务器,并截取apache服务的状态,赋予变量state

if [ "$state" == "open" ]

then

echo "activing"  

else

echo "no activing"

fi

24.编写一个脚本,判断用户输入的文件类型,如果用户输入的是文件,则输出common file;如果输入的是目录,则输出“directory”;如果是其他值,则输出“other file”

#!/bin/bash

# 判断用户输入的是什么文件

read -p "Please input a filename:" file # 接收键盘的输入,并赋予变量file

if [ -z "$file" ]

then

echo "Error, please input a filename"

exit 1

elif [ ! -e "$file" ] # 判断file的值是否存在

then

echo "Your input is not a file!"

exit 2

elif [ -f "$file" ] # 判断file的值是否为普通文件

then

echo "$file is a common fie!"

elif [ -d "$file" ]

then

echo "$file is a directory!"

else

echo "$file is an other file!"

fi

25.编写一个脚本,按日期生成一个文件,文件格式如2018-3-13.log,然后将磁盘的使用情况写入文件中

#! /bin/bash

d=`date +%F`

log=$d.log

df -h > $log

26.编写一个脚本,计算1~100之间能被5整除的数的和

#!/bin/bash

sum=0

for i in `seq 1 100`

do

let num=i%5

if [ $num -eq 0 ]; then

let sum+=i

fi

done

echo "sum is $sum"

27.使用sudo命令以usr2的身份在/tmp下新建文件usr2

sudo –u usr2 touch /tmp/usr2

28.提升用户usr1的权限,要求usr1可登入所有主机、可切换至所有用户、可执行所用命令

使用visudo命令打开/etc/sudoers文件,在其中添加“usr1 ALL=(ALL) ALL”后,保存退出。

29.新建用户usr1,指定其用户ID为666,工作目录为/home/usr1,所属组为group1,登陆shell为/bin/bash。创建完成后打印该用户的用户信息和组信息

useradd –u 666 –d /home/usr1 –g group1 –s /bin/bash

cat /etc/passwd /etc/group | grep usr1

30.按照以下要求写出相应命令

  • 1、新建一个组group1,新建一个系统组group2。
groupadd group1

groupadd –r group2
  • 2、更改用户组group1的GID为888,更改组名为group_1。
groupmod –g 888 –n group_1 group1
  • 3、删除用户组group_1。
groupdel group_1

31.Linux用户管理相关的文件有哪些?解释文件内容

在Linux系统中,主要使用/etc目录下的三个文件来维护用户及用户组的相关信息。

  1. /etc/passwd文件,其中存放关于账户相关的信息

  2. /etc/shadow文件,/etc/passwd的影子文件,来存放用户的加密口令。

  3. /etc/group文件,其中存放用户组相关的信息资料。

32.使用useradd命令添加用户student,然后使用userdel删除该用户

useradd student

passwd student

userdel student

33.举例说明cat、more和less命令的用法

cat命令可以把多个文件连接后输出到标准输出(屏幕)或加 ―> 文件名‖输出到另一个文件中。如显示当前目录下文件testfile1的内容可用如下命令:cat testfile1。 more命令显示文本文件的内容,一次显示一屏,满屏后停下来,可按键继续。如显示/etc/profile文件的内容,每屏10行可用如下命令:more -10 /etc/profile。 less命令与more命令相似,分屏显示文件的内容。less命令允许用户向前(PageUp)或向后(PageDown)浏览文件。如文件/etc/profile中查找字符串―HOSTNAME‖,并从该字符串后显示可以如下命令:less -p HOSTNAME /etc/profile

34.将主目录下的文件.bashrc复制到/tmp下,并重命名为bashrc,用命令实现上述过程

cp ~/.bashrc /tmp/bashrc

35.举例说明怎样对文件进行压缩和备份?

文件压缩的命令主要有bzip2和gzip;对文件备份的命令主要有tar。 如用bzip2命令压缩当前目录下的文件memo.1:bzip2 memo.1。 用gzip命令压缩压缩当前目录下的文件memo.1:gzip memo.1。 用tar命令将当前目录下的文件memo.1、memo.2、memo.3备份到文件memo.tar中: tar cvf memo.tar memo.1 memo.2 memo.3。

36.在Linux下有一文件列表内容如下:lrwxrwxrwx l hawkeye users 6 jul 18 09:41 nurse2→nurse1,要完整显示如上文件类别信息,应该使用什么命令?

ls -l

37.在Linux下有一文件列表内容如下:lrwxrwxrwx l hawkeye users 6 jul 18 09:41 nurse2→nurse1,该列表内容的第一列内容lrwxrwxrwx中的l是什么含义?对于其它类型的文件或目录还可能出现什么字符,它们分别表示什么含义?

l 表示该文件是符号链接文件。- 表示该文件是普通文件,d 表示该文件是目录,b 表示该文件是块设备文件,c 表示该文件是字符设备文件。

38.在根目录下创建目录gdc,并设置权限为gdc的主人具有读写执行权限,与主人同组用户可读写,其它任何用户则只能读

mkdir /gdc

chmod u=rwx,g=rw,o=r

39.在用户user的主目录下新建目录software,并将路径/etc下所有以h开头的文件及目录拷贝到software中,用命令实现上述过程

mkdir /home/user/software

cp /etc/h* /home/user/software

40.Vi编辑器有几种工作模式?各模式分别有什么功能?

Vi编辑器的工作模式分为命令模式、插入模式和底行模式,其中命令模式可实现光标移动、删除、复制、粘贴等操作;插入模式可实现文本编辑操作;底行模式可实现退出、查找等功能。

41.简单说明Linux启动流程中系统启动控制权的变更顺序

Linux系统启动过程中,BIOS首先获取系统启动控制权,在BIOS读取MBR中的引导加载程序后,系统启动控制权由BIOS移交到MBR,之后MBR中的引导加载程序Boot Loader获取操作系统对应的内核,将内核加载到内存中,systemed进程启动,引导过程结束。

Logo

更多推荐