第二阶段考试
一 、判断题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)之间的转换。
6、当LAN 内没有条件建立DNS 服务器,但又想让局域网内的用户可以使用计算机名互相访问时,应配
置 (/etc/hosts) 文件。
7、DHCP 是动态主机配置协议的简称,其作用是:(可以实现动态 IP 地址分配) 。
8、 唯一标识每一个用户的是 (UID) 和 (用户名) 。
9、docker和虚拟机的区别在于虚拟机有(内核)。
10、docker采用了一种(联合文件系统)挂载的方式实现了可写层
三、操作题一共5道、一题8分。
1、简述Raid0、Raid1、Raid5、Raid10的区别?
RAID名称 可用空间(N为磁盘数量,S为每个磁盘容量) 容错能力 最少磁盘数(N为磁盘数量)
Raid0 N*S 无容错能力 2,2+
Raid1 N/2*S 1:1冗余 2,2N
Raid5 (N-1)*S 允许最多1块磁盘损坏 3,3+
Raid10 N*S/2 每组镜像最多只能坏一块 4,4+(2N)
2、通过shell脚本部署一个httpd服务。
#!/bin/bash
URL="https://mirrors.bfsu.edu.cn/apache//httpd/httpd-2.4.46.tar.bz2"
SRCPKG="httpd-2.4.46"
INSDIR=/apps/httpd
CONFDIR=/etc/httpd
systemctl disable --now firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
echo "正在安装相关依赖包,请稍等..."
yum -y install wget gcc make autoconf ncurses-devel bzip2 apr-devel apr-util-devel pcre-devel openssl-devel &> /dev/null
if [ $? -eq 0 ];then
echo "安装成功!"
else
echo "安装错误,请检查相关依赖包。"
exit 1
fi
echo "下载源码包并解压,请稍后..."
(wget $URL;tar xvf $SRCPKG.tar.bz2 -C /usr/local/src) &>/dev/null
echo "编译并安装..."
cd /usr/local/src/$SRCPKG
./configure --prefix=$INSDIR --sysconfdir=$CONFDIR --enable-ssl
make -j 4 && make install
if [ $? -eq 0 ];then
echo "编译安装正常!"
else
echo "安装错误,请检查报错信息。"
exit 1
fi
sleep 1
echo "配置环境变量"
echo "PATH=$INSDIR/bin:$PATH" > /etc/profile.d/httpd.sh
source /etc/profile.d/httpd.sh
echo "指定apache用户运行"
sed -i 's/User daemon/User apache/;s/Group daemon/Group apache/' $CONFDIR/httpd.conf
id apache &>/dev/null && apache start || { useradd -r -s /sbin/nologin -d /var/www -c Apache -u 48 apache&&apachectl start; }
echo "查看进程并测试"
ps -ef |grep httpd && curl `ip a|awk '/inet/ && /br/ {print $2}'|cut -d/ -f1`
3、通过dockerfile实现nginx的部署
1>.在Dockerfile文件目录下准备编译安装的相关文件
#cd /data/dockerfile/web/nginx/nginx-1.18 && wget http://nginx.org/download/nginx-1.18.0.tar.gz && tar xf nginx-1.18.0.tar.gz
#vim nginx-1.18.0/conf/nginx.conf
user www;
root /data/html;
#echo "nginx website based on dockerfile" > index.html
2>.编写Dockerfile文件
#vim Dockerfile
FROM centos7
LABEL maintainer="sky "
ADD nginx-1.18.0.tar.gz /usr/local/src
RUN cd /usr/local/src/nginx-1.18.0 && ./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 /data/html/
EXPOSE 80 443
CMD ["nginx","-g","daemon off;"]
3>.生成 nginx 镜像
#vim build.sh
#!/bin/bash
TAG=$1
docker build -t nginx-1.18-centos7:$TAG .
docker images
#./build.sh v1.0
#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx-1.18-centos7 v1.0 dee66ea00791 2 minutes ago 422MB
4>.生成容器测试镜像
#docker run -P -d --name n1 nginx-1.18-centos7:v1.0
#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
661d4ad89b19 nginx-1.18-centos7:v1.0 "nginx -g 'daemon of…" 4 seconds ago Up 2 seconds 0.0.0.0:32776->80/tcp, 0.0.0.0:32775->443/tcp n1
#docker port n1
443/tcp -> 0.0.0.0:32775
80/tcp -> 0.0.0.0:32776
#curl 10.0.0.204:32776
nginx website based on dockerfile
#docker exec -it n1 bash
[root@661d4ad89b19 /]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 20580 2448 ? Ss 00:05 0:00 nginx: master process nginx -g daemon off;
www 6 0.0 0.1 21016 2280 ? S 00:05 0:00 nginx: worker process
root 7 0.5 0.1 12336 3588 pts/0 Ss 00:14 0:00 bash
root 30 0.0 0.1 51768 3424 pts/0 R+ 00:15 0:00 ps aux
4、简述TCP三次握手的过程?
第一次握手:首次建立连接时,客户端发送SYN(syn=j)数据包到服务器,并进入SYN_SENT状态,等待服务器确认。
第二次握手:服务器收到SYN包,必须确认客户端的SYN包,同时自己也发送一个SYN包,即SYN(syn=k)+ACK(ack=j+1),此时,服务器进入SYN_RECV状态。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送ACK(k+1)包,此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
5、docker容器时间跟本地时间不一致怎样解决
rm -f /etc/localtime && ln -s ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime