一 、判断题10道、一题3分。
1、DNS默认端口号是多少?(D )
A、443 B、80 C、25 D、53
2、docker中以下那个命令不正确 ?(B )
A、docker run B、docker file C、docker exec D、docker images
3、在shell脚本中以下那个选项不是关键字 (C)
A、if B、for C、watch D、while
4、打印/etc/passwd的奇数行? (A )
A、sed -n '1~2p' /etc/passwd
B、sed -c '1~2p' /etc/passwd
C、sed -n '1~3p' /etc/passwd
5、Linux下查看服务程序占用的端口命令是什么?(D)
A ps -aux
B netstat –apn
C watch
D lsof
6、 在linux系统中,用来存放系统所需要的配置文件和子目录是(A)
A /etc
B /var
C /root
D /home
7、(多选)下面哪些命令可以查看file1文件的第300-500行的内容?(BC)
A cat file1 | tail -n +300 | head -n 200
B cat file1| head -n 500 | tail -n +300
C sed -n ‘300,500p’ file1
8、Linux下查看磁盘使用情况的命令是?(B)
A dd
B df
C top
D netstat
9、linux查看系统活跃进程的命令是?(A)
A ps
B netstat
C df
D ifconfig
10、在shell 中变量的赋值有四种方法,其中,采用name=12 的方法称 (A)
A 直接赋值
B 使用read 命令
C 使用命令行参数
D 使用命令的输出
二、填空题10道、一题3分。
1、在linux中,某文件的权限为:drw-r–r–,该权限用数值形式表示为(644),修改文件权限用(chmod)命
令。
2、在Linux 系统 中,以(文件)方式访问设备 。
3、链接分为:(软连接) 和 (硬链接)。
4、(DHCP)可以实现动态 IP 地址分配。
5、DNS 实际上是分布在internet 上的主机信息的 数据库 ,其作用是(IP地址)和(FQDN)之间的转换。
6、当LAN 内没有条件建立DNS 服务器,但又想让局域网内的用户可以使用计算机名互相访问时,应配
置 (hosts) 文件。
7、DHCP 是动态主机配置协议的简称,其作用是:(管理分配IP地址) 。
8、 唯一标识每一个用户的是 (UID) 和 (用户名) 。
9、docker和虚拟机的区别在于虚拟机有(完整的操作系统、隔离性更好)。
10、docker采用了一种(镜像复制)挂载的方式实现了可写层
三、操作题一共5道、一题8分。
1、简述Raid0、Raid1、Raid5、Raid10的区别?
Raid0:最少需要2块磁盘;数据条带式分布;不能应对数据安全性较高的场合;无容错能力;读写性能提升
Raid1:最少需要2块磁盘;读性能提升,写性能略有下降;有冗余能力
Raid5: 最少需要3块磁盘;读写性能提升;有容错能力
Raid10:又叫Raid 1+0,最少需要4块磁盘;先按Raid 0分成两组,再分别对两组按Raid 1方式镜像;兼顾冗余(提供镜像存储)和性能(数据条带形分布);在实际应用中较为常用。
2、通过shell脚本部署一个httpd服务。
3、通过dockerfile实现nginx的部署
Step 1:先构建满足nginx编译安装环境的centos镜像
docker pull centos:centos7.7.1908
vim Dockerfile
#centos系统镜像
FROM centos:centos7.7.1908
LABEL maintainer="yindesheng <941268778@qq.com>"
RUN yum install -y wget && rm -rf /etc/yum.repos.d/* && wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
&& yum install -y gcc make autoconf gcc-c++ glibc glibc-devel pcre pcre-devel openssl epel-release
openssl-devel systemd-devel zlib-devel vim lrzsz tree tmux lsof tcpdump wget
net-tools iotop bc bzip2 zip unzip nfs-utils man-pages
&& yum clean all
&& rm -rf /etc/localtime
&& ln -s ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime
CMD ["/bin/bash"]
docker build -t centos-base:1.7 .
Step 2:构建nginx镜像
#nginx编译镜像
FROM centos-base:1.7
LABEL maintainer="yindesheng<941268778@qq.com>"
ADD nginx-1.16.1.tar.gz /usr/local/src
RUN cd /usr/local/src/nginx-1.16.1 && ./configure --prefix=/apps/nginx && make && make install
&& rm -rf /usr/local/src/nginx*
&& useradd -r nginx
COPY nginx.conf /apps/nginx/conf/
EXPOSE 80 443
CMD ["/apps/nginx/sbin/nginx"]
4、简述TCP三次握手的过程?
所谓的三次握手即TCP连接的建立。这个连接必须是一方主动打开,另一方被动打开的。
握手之前主动打开连接的客户端结束CLOSED阶段,被动打开的服务器端也结束CLOSED阶段,并进入LISTEN阶段。随后开始“三次握手”:
(1)首先客户端向服务器端发送一段TCP报文,其中:
-
标记位为SYN,表示“请求建立新连接”;
-
序号为Seq=X(X一般为1);
-
随后客户端进入SYN-SENT阶段。
(2)服务器端接收到来自客户端的TCP报文之后,结束LISTEN阶段。并返回一段TCP报文,其中:
-
标志位为SYN和ACK,表示“确认客户端的报文Seq序号有效,服务器能正常接收客户端发送的数据,并同意创建新连接”(即告诉客户端,服务器收到了你的数据);
-
序号为Seq=y;
-
确认号为Ack=x+1,表示收到客户端的序号Seq并将其值加1作为自己确认号Ack的值;随后服务器端进入SYN-RCVD阶段。
(3)客户端接收到来自服务器端的确认收到数据的TCP报文之后,明确了从客户端到服务器的数据传输是正常的,结束SYN-SENT阶段。并返回最后一段TCP报文。其中:
-
标志位为ACK,表示“确认收到服务器端同意连接的信号”(即告诉服务器,我知道你收到我发的数据了);
-
序号为Seq=x+1,表示收到服务器端的确认号Ack,并将其值作为自己的序号值;确认号为Ack=y+1,表示收到服务器端序号Seq,并将其值加1作为自己的确认号Ack的值;
-
随后客户端进入ESTABLISHED阶段。服务器收到来自客户端的“确认收到服务器数据”的TCP报文之后,明确了从服务器到客户端的数据传输是正常的。结束SYN-SENT阶段,进入ESTABLISHED阶段。
在客户端与服务器端传输的TCP报文中,双方的确认号Ack和序号Seq的值,都是在彼此Ack和Seq值的基础上进行计算的,这样做保证了TCP报文传输的连贯性。一旦出现某一方发出的TCP报文丢失,便无法继续"握手",以此确保了"三次握手"的顺利完成。
此后客户端和服务器端进行正常的数据传输。这就是“三次握手”的过程。
5、docker容器时间跟本地时间不一致怎样解决
docker exec -it container_name/ID
rm -rf /etc/localtime
ln -s ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime