第二阶段考试

一、选择题

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下查看服务程序占用的端口命令是什么?(B

A、ps -aux

B、netstat -anp

C、watch

D、lsof

6、在Linux系统中,用来存放系统所需的配置文件和子目录的是(A

A、/etc

B、/var

C、/root

D、/home

7、(多选)下面哪些命令可以查看file1文件的第300-500行的内容?(B、C

A、cat file1 | tail -n | head -n 200

B、cat file 1 | 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、使用命令的输出

二、填空题

1、在Linux中,某文件的权限为:drw-r--r--,该权限用数值形式表示为(644),修改文件权限用(chmod)命令。

2、在Linux系统中,以(文件的)方式访问设备

3、链接分别为(硬链接)和(软链接

4、(NAT)可以实现动态IP地址分配

5、DNS实际上是分布在Internet上的主机信息的数据库,其作用是(FQDN)和(IP地址)之间的转换

6、当LAN内没有条件建立DNS服务器,但又想让局域网内的用户可以使用计算机名互相访问时,应该配置(/etc/hosts)文件

7、DHCP是动态主机配置协议的简称,其作用是:(服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码)

8、唯一标识每一个用户的是(UID)和(用户名

9、docker和虚拟机的区别在于虚拟机有(完整的操作系统

10、docker采用了一种(联合)挂载的方式实现了可写层

三、操作题

1、简述Raid0、Raid1、Raid5、Raid10的区别?

答:

Raid0:条带卷,将数据分为固定大小的数据块,分别同时写入到N个磁盘中,即每个磁盘只需读写1/N的数据,提高了读写效率。但是数据没有冗余,一旦有块磁盘故障,整份数据都将不可用,安全性没有保障

Raid1:镜像卷,将数据写入到N个磁盘中,即每个磁盘都有一份完整的数据。相当于写了N份数据,写磁盘效率很低,读磁盘可从N个磁盘中同时读取,读磁盘效率提升,当一个磁盘损坏,还有其他的磁盘作为备份,数据安全性得到保障

Raid5:至少需要3块磁盘,将数据分为固定大小的数据块,分别写到N-1块磁盘中,剩余的一块用于生成校验信息,当有一块磁盘故障时,可以通过校验信息还原数据,由于校验信息的压力比较大,故所有磁盘轮流循环作为校验盘。这样即保障了读写效率也保障安全性

Raid10:先将磁盘组合为多组raid1,用于生成数据冗余,再将这多组raid1组合为raid0,用于提高读写效率,所以Raid10至少要4块磁盘。以4块磁盘为例:数据会被分为n份,分别写入到2组raid0中,然后每份数据又被写2次,写入到raid1的2块磁盘中。这样每份数据都有冗余

2、通过shell脚本部署一个httpd服务

#!/bin/bash
set -ue
RED='e[1;31m'
GREEN='e[1;32m'
END='e[0m'


rpm -q httpd &> /dev/null && echo -e "${RED}httpd已经部署,无需安装${END}"

#yum安装依赖程序
yum install -y apr apr-devel apr-util-devel pcre-devel gcc make openssl-devel lbzip2 redhat-rpm-config

#下载并解压源码包
wget -P /usr/local/src https://mirrors.aliyun.com/apache/httpd/httpd-2.4.46.tar.bz2 && cd /usr/local/src || echo -e "${RED}下载httpd源码包失败,请检查网络${END}"
tar xf httpd-2.4.46.tar.bz2 && cd httpd-2.4.46
./configure --prefix=/apps/httpd --sysconfdir=/etc/httpd --enable-ssl && make && make install
echo -e "${GREEN}httpd安装成功${END}"

#创建apache用户
useradd -r -s /sbin/nologin -d /var/www apache
sed -ri.bak 's/^User.*/User apache/' /etc/httpd/httpd.conf
sed -ri.bak 's/^Group.*/Group apache/' /etc/httpd/httpd.conf
#配置环境 echo
'PATH=/apps/httpd/bin:$PATH' > /etc/profile.d/httpd.sh echo -e "${GREEN}请重新读取配置文件/etc/profile.d/httpd.sh,之后可执行 apachectl start 或 httpd -k start 命令启动httpd服务${END}"

3、通过dockerfile实现nginx的部署

答:

准备相关文件

[root@ubuntu1804 dockerfile]#ls
Dockerfile  index.html  nginx-1.16.1.tar.gz  nginx.conf
[root@ubuntu1804 dockerfile]#cat nginx.conf 

user  nginx;
worker_processes  1;
...

编写Dockerfile文件

[root@ubuntu1804 dockerfile]#vim Dockerfile 

FROM    centos
LABEL   maintainer="jojohyj"
RUN     yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel 
&&      useradd -r -s /sbin/nologin nginx 
&&      yum clean all
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* 
&&      ln -s /apps/nginx/sbin/nginx /usr/sbin/nginx
#COPY   nginx.conf /apps/nginx/conf/
COPY    index.html /apps/nginx/html/
EXPOSE  80 443
CMD     ["nginx","-g","daemon off;"]

生成nginx镜像

[root@ubuntu1804 dockerfile]#docker build --force-rm -t nginx:centos .

[root@ubuntu1804 dockerfile]#docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               centos              0f8801ce8afd        7 minutes ago       395MB
centos              latest              0d120b6ccaa8        2 days ago          215MB

生成容器测试

[root@ubuntu1804 dockerfile]#docker run -d -p 80:80 nginx:centos 
eeddc9c6faf40812a12060534c3e452b92369d0d98185e3cdfd84f3fcdbc0bc9
[root@ubuntu1804 dockerfile]#docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
eeddc9c6faf4        nginx:centos        "nginx -g 'daemon of…"   4 seconds ago       Up 3 seconds        0.0.0.0:80->80/tcp, 443/tcp   affectionate_leakey
[root@ubuntu1804 dockerfile]#curl 127.0.0.1
nginx base on centos

4、简述TCP三次握手过程

答:

第 1 次握手:客户端向服务器发送 SYN 报文(SEQ=x,SYN=1),并进入 SYN_SENT 状态,等待服务器确认

第 2 次握手实际上是分两部分来完成的,即 SYN+ACK(请求和确认)报文。

  • 服务器收到了客户端的请求,向客户端回复一个确认信息(ACK=x+1)。
  • 服务器再向客户端发送一个 SYN 包(SEQ=y)建立连接的请求,此时服务器进入 SYN_RECV 状态

第 3 次握手:客户端收到服务器的回复(SYN+ACK 报文)。此时,客户端也要向服务器发送确认包(ACK)。此包发送完毕客户端和服务器进入 ESTABLISHED 状态,完成 3 次握手

5、docker容器时间跟本地时间不一致怎么样解决

答;

进入容器,删除原有localtime文件,建立正确时区文件的软链接为新的localtime文件

[root@ubuntu1804 dockerfile]#docker exec -it ee bash
[root@eeddc9c6faf4 /]# date
Thu Aug 13 05:53:50 UTC 2020
[root@eeddc9c6faf4 /]# rm -f /etc/localtime 
[root@eeddc9c6faf4 /]# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@eeddc9c6faf4 /]# date
Thu Aug 13 13:54:39 CST 2020
[root@eeddc9c6faf4 /]# 
原文地址:https://www.cnblogs.com/jojohyj/p/13496052.html