第二阶段考试

第二阶段考试

一 、判断题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服务。

#!/bin/bash
#一键安装httpd

#配置yum源和epel源
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
yum repolist

#下载httpd源码包
curl -o /opt/httpd-2.4.43.tar.bz2 https://mirror.bit.edu.cn/apache/httpd/httpd-2.4.43.tar.bz2
ls /opt
#安装解压赖包
yum -y install bzip2

#安装httpd依赖包
yum install -y gcc make apr-devel apr-util-devel pcre-devel openssl-devel redhat-rpm-config

#创建apache用户
useradd -r -u 48 -s /sbin/nologin -c "Apache" -d /var/www/ apache

cd /opt/ && tar -xvf httpd-2.4.43.tar.bz2 -C /usr/local

cd /usr/local/httpd-2.4.43
#编译安装
COLOR="\033[1;31m"
END="\033[0m"
./configure --prefix=/usr/local/httpd --sysconfdir=/etc/httpd --enable-ssl
make && make install

if [ $? -eq 0 ] ;then echo -e "$COLOR httpd installed successful!$END"
fi

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

 

posted @ 2020-08-11 17:46  無心的Man  阅读(163)  评论(0编辑  收藏  举报