第二阶段考试

第二阶段考试


一 、判断题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下查看服务程序占用的端口命令是什么?( B
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 上的主机信息的 数据库 ,其作用是(FQDN)和(IP)之间的转换。


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


7、DHCP 是动态主机配置协议的简称,其作用是:(为指定网段内的主机动态的分配ip地址) 。


8、 唯一标识每一个用户的是 (uid) 和 (username) 。


9、docker和虚拟机的区别在于虚拟机有(内核)。


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


三、操作题一共5道、一题8分。


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

      读写性能               可用空间             容错能力           最少磁盘数

Raid 0          提升                   N*mins(S1,S2,...)                   无容错能力                          2,2+

Raid 1 读性能提升,写性能略有下降       1*min(S1,S2...)                      有冗余能力                         2,2N

Raid 5          提升                               (N-1)*mins(S1,S2,..)           允许最多1块磁盘损坏              3,3+

RAID 10  提升                     N*min(S1,S2,...)/2           每组镜像最多只能坏一块            4,4+

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

#CentOS 8 编译安装 httpd-2.4.46

#安装前准备,关闭防火墙和SElinux

systemctl disable --now firewalld.service
sed -i.bak 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

#1: 安装相关依赖包

dnf -y install gcc make autoconf apr-devel apr-util-devel pcre-devel openssl-devel redhat-rpm-config

#2: 下载并解压缩包

$TARGET=/usr/local/src
$INSTALL=/apps/httpd
rpm -qa wget && echo "Prepare to Download httpd" || yum -y install wget &> /dev/null
wget -qO $TARGET/httpd-2.4.46.tar.bz2 http://apache.mirror.serversaustralia.com.au//httpd/httpd-2.4.46.tar.bz2
tar xvf $TARGET/httpd-2.4.46.tar.bz2 -C $TARGET

#3: 配置

cd $TARGET/httpd-2.4.46
./configure --prefix=$INSTALL --sysconfdir=/etc/httpd --enable-ssl

#4: 编译并安装

make -j 4 && make install

#5: 配置环境

echo 'PATH="$INSTALL"/bin:$PATH' > /etc/profile.d/httpd.sh
. /etc/profile.d/httpd.sh

#6: 运行

apachectl start

#7: 指定用apache用户运行

useradd -r -s /sbin/nologin -d /var/www -c Apache -u 48 apache
sed -ri 's#(User )daemon#\1apache#' /etc/httpd/httpd.conf
sed -ri 's#(Group )daemon#\1apache#' /etc/httpd/httpd.conf

#8: 配置生效

apachectl restart

#9: 验证生效

curl 10.0.0.82 &> /dev/null
if [ `echo $?` -eq 0 ]; then
echo "httpd install complete"
else
echo "httpd install failed"
fi


3、通过dockerfile实现nginx的部署

#在Dockerfile目录下准备编译安装的相关文件

mkdir /data/dockerfile/web/nginx/1.16.1 -pv
cd /data/dockerfile/web/nginx/1.16.1
vim nginx.conf
user nginx;
worker_processes 1;
#daemon off;
wget http://nginx.org/download/nginx-1.16.1.tar.gz

#编写Dockerfile文件

vim Dockerfile
#Nginx Dockerfile
FROM centos:centos7.7.1908
MAINTAINER dave <root@dave.com>
RUN yum install -y gcc gcc-c++ 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=/app/nginx \
&& make \
&& make install \
&& rm -rf /usr/local/src/nginx*
ADD nginx.conf /apps/nginx/conf/nginx.conf
COPY index.html /apps/nginx/html/
RUN ln-s /apps/nginx/sbin/nginx /usr/sbin/nginx
EXPOSE 80 443
CMD ["nginx","-g","daemon off;"]

#生成nginx镜像

cd /data/dockerfile/web/nginx/1.16.1
vim build.sh
#!/bin/bash
docker build -t nginx-centos7:1.6.1-v2
chmod +x build.sh
#验证镜像生成
docker images
docker run -d -p 80:80 nginx-centos7:1.6.1-v2
curl 127.0.0.1


4、简述TCP三次握手的过程?

建立握手前, 客户端开启tcp随机端口, 服务端要监听对应服务端口

1. 客户端发送请求报文, TCP头部SYN置为1, 同时生成本机序号seq=x, 之后进入SYN_SEND状态

2. 服务端收到SYN报文进行确认, 将确认报文中SYN和ACK位都置为1, 同时将确认号ack设置为ack=x+1通知客户端发送下一个包, 同时自己也会添加一个序号seq=y, 之后进入SYN_RECV状态

3. 客户端收到确认报文, 将ACK置为为1, 确认后设定为ack=y+1, 自己的序号为seq=x+1, 此时TCP连接建立, 客户端随机进入ESTABLISHED状态, 服务端收到客户端确认, 之后进入ESTABLISHED状态


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

重新指定localtime

rm -f /etc/localtime

ln -s /usr/share/zoneinfo/Australia/Sydney /etc/localtime

如果重新指定后还有问题, 使用ntpdate或者rdate命令同步时间

posted @ 2020-08-10 20:18  大卫不是很能吃  阅读(147)  评论(0编辑  收藏  举报