第二阶段考试

一、判断题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 服务器,但又想让局域网内的用户可以使用计算机名互相访问时,应配置(hosts)文件。

7、DHCP 是动态主机配置协议的简称,其作用是:(给局域网内的机器自动分配IP地址)。

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

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

10、docker采用了一种(容器目录对应宿主机磁盘目录 -v)挂载的方式实现了可写层

三、操作题一共5道、一题8分。
1、简述Raid0、Raid1、Raid5、Raid10的区别?
raid0将两块或多块磁盘串联在一起,形成一个大的磁盘组,容量为所有磁盘总和,有读写性能好的优点,但没冗余功能,一块磁盘出现问题整个阵列损坏。
raid1将两块或2以上的偶数个磁盘组成阵列,每个磁盘对应一个镜像磁盘,写入性能下降,磁盘利用率为50%,每组磁盘中一个出现故障不会丢失数据,安全性较高。
raid5将3块以上磁盘组成阵列,把数据和奇偶校验信息存储到每个磁盘上,磁盘利用率为N-1,阵列中一块磁盘出现故障不会丢失数据,读写性能较好。
raid10将4块或4的倍数个磁盘组成阵列,分组顺序为两个或2的倍数个磁盘为一组做成raid1共两组,然后将两组raid1组成raid0,磁盘利用率为50%,读写速度快安全性高。

2、通过shell脚本部署一个httpd服务。
vim httpd_install.sh
#!/bin/bash
#httpd source code install

#下载源码包
target_dir=/usr/local/src
install_dir=/usr/local/httpd
rpm -qa | grep wget || yum install -y wget
wget -O $target_dir/httpd-2.4.43.tar.bz2 https://mirror.bit.edu.cn/apache/httpd/httpd-2.4.43.tar.bz2

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

#添加apache用户
id apache &> /dev/null || useradd -r -u 80 -d /var/www -s /sbin/nologin apache

#解压源码包
tar xf $target_dir/httpd-2.4.43.tar.bz2 -C $target_dir
cd $target_dir/httpd-2.4.43

#编译安装
./configure --prefix=$install_dir --sysconfdir=/etc/httpd --enable-ssl
make -j`lscpu | grep "^CPU(s)" | awk ‘{print $NF}‘` && make install

#设置环境变量
echo ‘PATH=‘$install_dir‘/bin:$PATH‘  > /etc/profile.d/httpd.sh
source /etc/profile.d/httpd.sh

#修改配置文件
sed -ri ‘s#(User )daemon#\1apache#‘ /etc/httpd/httpd.conf
sed -ri ‘s#(Group )daemon#\1apache#‘ /etc/httpd/httpd.conf

#启动httpd服务
apachectl start

#检查firewalld状态
firewall_status=`systemctl status firewalld.service | grep "Active" | awk ‘{print $2}‘`
if [ $firewall_status = active ];then
    echo "防火墙已启用,开放端口"
    firewall-cmd --permanent --add-service=http --add-service=https
    firewall-cmd --reload
fi

3、通过dockerfile实现nginx的部署
制作centos镜像
vim Dockerfile
内容如下:
FROM centos:centos7.8.2003
LABEL maintainer="liyusheng <>" version="v1.0"
RUN rm -f /etc/localtime && ln -s ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak && \
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo && \
sed -ri ‘/mirrors.aliyuncs.com|mirrors.cloud.aliyuncs.com/d‘ /etc/yum.repos.d/CentOS-Base.repo && \
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo && \
yum -y install wget vim net-tools iproute psmisc bash-completion lsof tcpdump tree file && \
rm -rf /var/cache/yum/* && useradd -u 80 -r -s /sbin/nologin www

docker build -t centos7.8:prod_v1.0 .

利用centos镜像制作nginx镜像
mkdir nginx
wget http://nginx.org/download/nginx-1.18.0.tar.gz
vim Dockerfile
内容如下:
FROM centos7.8:prod_v1.0
LABEL maintainer="liyusheng <>" version="v1.0"
ADD nginx-1.18.0.tar.gz /usr/local/src/
RUN yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel && \
rm -rf /var/cache/yum/* && cd /usr/local/src/nginx-1.18.0 && \
./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module \
--with-http_realip_module --with-http_sub_module && make && make install && mkdir -p /data/web && \
echo "nginx is running in docker" > /data/web/index.html && \
sed -ri ‘#(user  )\‘ /usr/local/nginx/conf/nginx.conf && \
sed -ri ‘(worker_processes  )\‘ /usr/local/nginx/conf/nginx.conf && \
sed -ri ‘#(error_log  logs/error.log  )\‘ /usr/local/nginx/conf/nginx.conf && \
sed -ri ‘21,#@@‘ /usr/local/nginx/conf/nginx.conf && \
sed -ri ‘@/data/‘ /usr/local/nginx/conf/nginx.conf && \
sed -ri ‘3a daemon off;‘ /usr/local/nginx/conf/nginx.conf
EXPOSE 80 443
CMD /usr/local/nginx/sbin/nginx

docker build -t centos7.8:nginx_v1.0 .

运行一个nginx容器
docker run -d -it --name nginx1 centos7.8:nginx_v1.0

测试
curl 172.17.0.2

4、简述TCP三次握手的过程?
第一次:客户端发送连接请求报文,将SYN标识位设为1,同时选择一个初始序号seq=x,然后进入SYN_SEND状态
第二次:服务器收到SYN报文段进行确认,在确认报文段中把SYN和ACK位都设为1,确认号为ack=x+1,同时也为自己选择一个初始序号seq=y,然后进入SYN_RECV状态(半连接状态)
第三次:客户端再进行一次确认,将ACK设为1,确认号为ack=y+1,自己的序号seq=x+1,此时TCP连接已经建立,客户端进入ESTABLISHED状态,服务器收到客户端的确认信息后,
也会进入ESTABLISHED状态。

5、docker容器时间跟本地时间不一致怎样解决
修改时区:rm -f /etc/localtime;ln -s ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime
如果修改时区后时间还有偏差,使用ntpdate 、rdate等命令同步时间。

相关推荐