马哥博客第二次月考

一 、判断题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的奇数行? ( C
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服务。
答:

#!/bin/bash
#
#********************************************************************
#Author: xuanlv
#Date: 2020-08-10
#FileName: httpd.sh
#URL: https://www.cnblogs.com/xuanlv-0413/
#Description: The test script
#Copyright (C): 2020 All rights reserved
#********************************************************************

set -u

# 变量

URL=https://mirrors.tuna.tsinghua.edu.cn/apache//httpd/

FILE=httpd-2.4.43.tar.gz

INSTALL_DIR=/apps/httpd2

RESD="\E[$[RANDOM%7+31];1m"

END="\E[0m"

# 包名

PACKAGE=`echo $FILE |sed -nr 's/(.*[0-9.]+)\.[[:alpha:]]+.*/\1/p'`

# 基名

BASEDIR=`basename $INSTALL_DIR`

# 后缀名

SUFFIX=`echo httpd-2.4.43.tar.bz2 |sed -nr 's/.*\.([^.]+)/\1/p'`

echo -en "$RESD----------install is httpd.service----------$END"

sleep 3

# 安装依赖包

cd /usr/local/src/

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

# 下载包

ping -W1 -c 2 www.baidu.com &> /dev/null

if [ $? -eq 0 ]; then

    wget $URL$FILE

    case $SUFFIX in

gz|bz2|xz|tar)

    tar -xvf $FILE

    ;;

zip)

    unzip $FILE

    ;;

*)

    echo "后缀识别不了,错误"

    exit 2

esac

else

    echo -e "\E[31m网络不通!!\E[0m"

    cp /root/$FLIE /usr/local/src/

fi

# 编译安装

cd $PACKAGE

./configure --prefix=$INSTALL_DIR --sysconfdir=/etc/$BASEDIR

make && make install

# 创建一个启动Apache用户

useradd -r -s /sbin/nologin -u 50 apache

# 修改配置文件用户

sed -ri -e 's/^(User).*/\1 apache/' -e 's/^(Group).*/\1 apache/' /etc/$BASEDIR/httpd.conf

echo "PATH=$INSTALL_DIR/bin:$PATH" > /etc/profile.d/$BASEDIR.sh

source /etc/profile.d/$BASEDIR.sh

sed -ri 's#(^.*<h1>)(.*)(</h1>.*$)#\16.18 Go! \3 #' $INSTALL_DIR/htdocs/index.html

apachectl start

cd ..

rm -rf $FILE $PACKAGE

echo -en "$RESD----------httpd.service is finished----------$END"

3、通过dockerfile实现nginx的部署
答:
1)准备工作

关闭防火墙

关闭selinux

安装好docker-ce,并准备好docker设置加速

2)拉取centos7系统镜像

docker pull centos:centos7.8.2003

3)创建准备文件目录结构,方便后期镜像比较多可以进行分类

[root@localhost ~]# mkdir /data/dockerfile/{system/{centos,ubuntu},web/{apache,nginx}} -pv

[root@localhost ~]# cd /data/dockerfile/system/

[root@localhost /data/dockerfile/system]# vim Dockerfile

FROM centos:centos7.8.2003

LABEL maintainer="liaolongxuan <root@liaolongxuan.com>"

RUN yum -y install wget && rm -rf /etc/yum.repos.d/* \

        && wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/Centos-7.repo http://mirrors.aliyun.com/repo/epel-7.repo \

        && yum -y install vim-enhanced tcpdump lrzsz tree telnet bash-completion net-tools wget bzip2 lsof zip unzip nfs-utils gcc make gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel \

        && yum clean all \

        && rm -rf /etc/localtime \

        && ln -s ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime \

        && rm -rf /var/cache/yum/*

4)写个脚本执行构建

[root@localhost /data/dockerfile/system]# cat build.sh

#!/bin/bash
#
#********************************************************************
#Author: xuanlv
#Date: 2020-08-10
#FileName: build.sh
#URL: https://www.cnblogs.com/xuanlv-0413/
#Description: The test script
#Copyright (C): 2020 All rights reserved
#********************************************************************

TAG=$1

docker build -t centos7-base:$TAG .

授可执行权限

[root@localhost /data/dockerfile/system]# chmod +x build.sh

执行构建

[root@localhost /data/dockerfile/system]#./build.sh v1.0

5)制作Nginx编译镜像,宿主机下载有Nginx编译包并做好模板配置文件

[root@localhost /data/dockerfile/web/nginx]# ll

-rwxr-xr-x 1 root root 56 Aug 3 00:24 build.sh

-rw-r--r-- 1 root root 400 Aug 3 21:26 Dockerfile

-rw-r--r-- 1 root root 14 Aug 3 00:11 index.html

-rw-r--r-- 1 root root 1032630 Aug 3 00:22 nginx-1.16.1.tar.gz

-rw-r--r-- 1 root root 2680 Aug 3 21:17 nginx.conf

修改配置并添加一行

[root@localhost /data/dockerfile/web/nginx]# cat nginx.conf

user www;

worker_processes 1;

daemon off; # 添加的这行,前台运行Nginx

[root@localhost /data/dockerfile/web/nginx]# cat Dockerfile

FROM centos7-base:v1.0

LABEL maintainer="liaolongxuan <root@liaolongxuan.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 -s /sbin/nologin -M

COPY nginx.conf /apps/nginx/conf/

COPY index.html /apps/nginx/html/

EXPOSE 80

CMD ["/apps/nginx/sbin/nginx"]

6)编写构建执行脚本

[root@localhost /data/dockerfile/web/nginx]# vim build.sh

#!/bin/bash
#
#********************************************************************
#Author: xuanlv
#Date: 2020-08-10
#FileName: build.sh
#URL: https://www.cnblogs.com/xuanlv-0413/
#Description: The test script
#Copyright (C): 2020 All rights reserved
#********************************************************************

TAG=$1

docker build -t nginx-centos7:$TAG .

7)授可执行权限

[root@localhost /data/dockerfile/web/nginx]# chmod +x build.sh

8)执行脚本构建镜像

[root@localhost /data/dockerfile/web/nginx]# ./build.sh v1.0

9)启动

[root@localhost /data/dockerfile/web/nginx]# docker run -d -p 80:80 nginx-centos7:v1.0

10)测试

[ root@localhost ~]# curl 10.0.0.10

Test is nginx

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容器时间跟本地时间不一致怎样解决
答:

修改时区:

[ root@localhost ~]# rm -rf /etc/localtime

[ root@localhost ~]# ln -s ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime

如果修改的时区后时间还有偏差,使用ntpdate 命令同步时间。

posted @ 2020-08-10 21:20  空白的旋律  阅读(112)  评论(0编辑  收藏  举报