zoukankan      html  css  js  c++  java
  • 马哥教育第二次月考

    第二阶段考试
    一 、判断题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行的内容?( B C )
    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采用了一种(  数据卷   )挂载的方式实现了可写层
    三、操作题一共5道、一题8分。
    1、简述Raid0、Raid1、Raid5、Raid10的区别?
    RAID俗称磁盘冗余阵列,简称为磁盘阵列.区别在于:
      raid0:至少需要俩块磁盘;优点是读写速度块,性能最佳;缺点是没有冗余,磁盘一旦损坏,容易丢失数据
      raid1:需要双数磁盘(2,4,6...);优点是镜像冗余,可以最多损坏一半数据也不会丢失;缺点是写入速度较慢.适合做系统盘.
      raid5:至少需要三块磁盘;优点是具有一定的性能和冗余,可以最多损坏一个数据也不会丢失,读性能相对比较好;缺点是:写入性能不高.
      raid10:也叫raid01,至少需要四块磁盘,先按raid0分为俩组,再分别对俩组按raid1做镜像冗余;优点是既兼顾了冗余,又提高了性能;缺点是:花费高
    2、通过shell脚本部署一个httpd服务。
    #!/bin/bash
    ##thi sh is  make install apache
    yum install apr-devel  apr-util-devel gcc pcre-devel openssl-devel redhat-rpm-config wget make curl -y &> /dev/null
    id apache
    [ $? -ne 0 ] && useradd -r apache -s /sbin/nologin -d /var/www -u 48
    [ -d /apps ] || mkdir /apps &> /dev/null
    [ -d /etc/httpd ] && rm -rf /etc/httpd
    cd /usr/local/src
    [ -e httpd-2.4.43.tar.bz2 ] || wget https://mirror.bit.edu.cn/apache//httpd/httpd-2.4.43.tar.bz2
    [ -d httpd-2.4.43 ] && rm -rf httpd-2.4.43 
    tar xf httpd-2.4.43.tar.bz2
    cd httpd-2.4.43/
    ./configure --prefix=/apps/httpd --sysconfdir=/etc/httpd --enable-ssl &>/dev/null
    make &>/dev/null
    make install &>/dev/null
    echo 'PATH=/apps/httpd/bin:$PATH' > /etc/profile.d/httpd.sh
    . /etc/profile.d/httpd.sh
    sed -i 's/daemon/apache/g' /etc/httpd/httpd.conf
    sed -i 's/^#ServerName.*/ServerName localhost:80/p' /etc/httpd/httpd.conf
    apachectl
    [ $? -eq 0 ] && echo  -e "`curl 127.0.0.1:80` 
    Apache 安装成功" || echo "Apache 安装失败"
    3、通过dockerfile实现nginx的部署
      构造底层cento7.8镜像
    [root@ubuntu18044 /dockerfile/centos]#tree 
    .
    ├── build.sh
    └── Dockerfile
    
    0 directories, 2 files
    [root@ubuntu18044 /dockerfile/centos]#cat Dockerfile 
    FROM     centos:centos7.8.2003
    LABEL     maintainer="huangguangrui <158086268@qq.com>"
    
    RUN     yum install -y wget && rm -f /etc/yum.repos.d/* 
            && wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 
            && wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 
            && sed -i /mirrors.aliyuncs.com/d /etc/yum.repos.d/CentOS-Base.repo 
            && sed -i /mirrors.cloud.aliyuncs.com/d /etc/yum.repos.d/CentOS-Base.repo 
            && yum install -y vim-enhanced tcpdump lrzsz tree telnet bash-completion net-tools bzip2 lsof 
                zip unzip nfs-utils gcc make gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel 
                system-devel zlib-devel 
            && yum clean all 
            && rm -f /etc/localtime 
            && ln -s ../usr/share/zoneinfo/Asia/Shanghai  /etc/localtime 
            && useradd -u 88 www
    [root@ubuntu18044 /dockerfile/centos]#bash build.sh v2
    Sending build context to Docker daemon  3.584kB
    Step 1/3 : FROM     centos:centos7.8.2003
     ---> afb6fca791e0
    Step 2/3 : LABEL     maintainer="huangguangrui <158086268@qq.com>"
     ---> Using cache
     ---> bb2d0951cf40
    Step 3/3 : RUN     yum install -y wget && rm -f /etc/yum.repos.d/*             && wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo            && wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo      && sed -i /mirrors.aliyuncs.com/d /etc/yum.repos.d/CentOS-Base.repo         && sed -i /mirrors.cloud.aliyuncs.com/d /etc/yum.repos.d/CentOS-Base.repo         && yum install -y vim-enhanced tcpdump lrzsz tree telnet bash-completion net-tools bzip2 lsof             zip unzip nfs-utils gcc make gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel             system-devel zlib-devel         && yum clean all         && rm -f /etc/localtime         && ln -s ../usr/share/zoneinfo/Asia/Shanghai  /etc/localtime         && useradd -u 88 www
     ---> Using cache
     ---> 53ddfb263e3e
    Successfully built 53ddfb263e3e
    Successfully tagged centos7.8:v2
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    centos7.8           v2                  53ddfb263e3e        4 minutes ago       399MB

      基于centos7.8部署nginx.

    .[root@ubuntu18044 /dockerfile/nginx]#tree
    . ├── build.
    sh ├── Dockerfile ├── index.html └── nginx-1.16.1.tar.gz 0 directories, 4 files [root@ubuntu18044 /dockerfile/nginx]#cat Dockerfile FROM centos7.8:v2 LABEL maintainer="huangguangrui <158086268@qq.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* COPY nginx.conf /apps/nginx/conf/ COPY index.html /apps/nginx/html/ EXPOSE 80 443 CMD ["/apps/nginx/sbin/nginx"]

    
    
    [root@ubuntu18044 /dockerfile/nginx]#bash build.sh v1
    Sending build context to Docker daemon  1.037MB
    [WARNING]: Empty continuation line found in:
        RUN     cd /usr/local/src/nginx-1.16.1         && ./configure --prefix=/apps/nginx         && make && make install         && rm -rf /usr/local/src/nginx* COPY    nginx.conf /apps/nginx/conf/
    [WARNING]: Empty continuation lines will become errors in a future release.
    Step 1/7 : FROM    centos7.8:v2
     ---> 53ddfb263e3e
    Step 2/7 : LABEL     maintainer="huangguangrui <158086268@qq.com>"
     ---> Running in 7eded2fde31c
    Removing intermediate container 7eded2fde31c
     ---> bb694b405bd8
    Step 3/7 : ADD     nginx-1.16.1.tar.gz /usr/local/src
     ---> 2e9fa1ceb851
    Step 4/7 : RUN     cd /usr/local/src/nginx-1.16.1         && ./configure --prefix=/apps/nginx         && make && make install         && rm -rf /usr/local/src/nginx* COPY    nginx.conf /apps/nginx/conf/
     ---> Running in 493f60b288a0
    
    ...
    
    Removing intermediate container a043cefe19a8
     ---> 857ba4e06075
    Successfully built 857ba4e06075
    Successfully tagged nginx-centos7.8:v3
    REPOSITORY          TAG                 IMAGE ID            CREATED                  SIZE
    nginx-centos7.8     v1                  21bdd2a2cd1c        3 minutes ago            409MB
    centos7.8           v2                  53ddfb263e3e        13 minutes ago           399MB
    centos              centos7.8.2003      afb6fca791e0        3 months ago             203MB
    [root@ubuntu18044 /dockerfile/nginx]#docker run -d -P  nginx-centos7.8:v1 
    73c15f016987a4cee2bd396bbedf3dfd4b5298d677bb5f7edccc53d5330c74f1
    [root@ubuntu18044 /dockerfile/nginx]#docker port gallant_easley 
    443/tcp -> 0.0.0.0:32775
    80/tcp -> 0.0.0.0:32776
    [root@ubuntu18044 /dockerfile/nginx]#curl 127.0.0.1:32776
    <h1>nginx in docker for dockerfile</h1>
    4、简述TCP三次握手的过程?
    三次握手,也叫TCP连接的建立.这个连接必须是一方主动打开,另一方被动打开的.
    
    握手之前双方都是CLOSED阶段,首先由主动打开连接的客户端结束CLOSED阶段,被动打开连接的服务器端也结束CLOSED阶段,
    并进入LISTEN阶段,随后开始三次握手.

    第一次握手:客户端向服务器端发送一段TCP报文,其中包括:
      标志位为SYN,表示请求建立新连接;序列号为seq=x;随后客户端进入SYN-SENT阶段
    第二次握手:服务器端收到来自客户端的TCP报文后,结束LISTEN阶段,并返回一段TCP报文,其中包括:
      标志位为SYN和ACK,表示 服务器端同意建立新连接;序列号为seq=y;
      确认号为ack=x+1,表示 确认已经收到客户端的序号seq,并将seq的值加1作为确认号ack的值;
      随后服务器端进入SYN-RCVD阶段
    第三次握手:客户端收到来自服务器端的确认数据的TCP报文后,结束SYN-SENT阶段,并返回最后一段报文,其中包括:
      标志位为ACK,表示确认收到服务器端的同意连接信号;
      序号为seq=x+1,表示收到服务器端的ack号,并将ack的值加1作为自己序号seq的值;
      确认号为ack=y+1,表示已经收到服务器端的seq序号,并将seq序号的值加1作为自己确认号ack的值;
      随后客户端进入了ESTABLISHED阶段;
      服务器收到最后的一段报文后,也结束了
    SYN-RCVD阶段,进入ESTABLISHED阶段.

    此后客户端和服务器端就可以正常的进行数据传输了,这就是三次握手的过程.
    5、docker容器时间跟本地时间不一致怎样解决
    时间不一样可以通过更改时区来解决:
    首先进入容器内:
      docker exec -it 容器ID/名字 bash
    删除默认配置的时区:
      rm -f /etc/localtime
    把上海的时区软连接到/etc/localtime
      ln -s ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  • 相关阅读:
    C#.Net 如何动态加载与卸载程序集(.dll或者.exe)0-------通过应用程序域AppDomain加载和卸载程序集
    C#.Net 如何动态加载与卸载程序集(.dll或者.exe)6-----在不卸载程序域的前提下替换程序集文件。
    C#.Net 如何动态加载与卸载程序集(.dll或者.exe)5-----Assembly.Unload
    C#.Net 如何动态加载与卸载程序集(.dll或者.exe)4-----Net下的AppDomain编程 [摘录]
    C#.Net 如何动态加载与卸载程序集(.dll或者.exe)3---- 动态加载Assembly应用程序
    C#.Net 如何动态加载与卸载程序集(.dll或者.exe)2----通过应用程序域AppDomain加载和卸载程序集之后,如何再返回原来的主程序域
    C#.Net 如何动态加载与卸载程序集(.dll或者.exe)1----C#中动态加载和卸载DLL
    iOS:制作一个简易的计算器
    iOS:UIView视图与组件控件
    C++:友元运算符重载函数
  • 原文地址:https://www.cnblogs.com/huangguangrui/p/13459152.html
Copyright © 2011-2022 走看看