• 马哥教育第二阶段考试


    一 、判断题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 上的主机信息的 数据库 ,其作用是(域名/主机名)和(ip地址)之间的转换  

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

    7、DHCP 是动态主机配置协议的简称,其作用是:(DHCP 允许主机从 DHCP 服务器获取所需的 TCP/IP 配置信息) 

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

    9、docker和虚拟机的区别在于虚拟机有(完整的操作系统,独立的内核)。

    10、docker采用了一种(Union FS/联合文件系统)挂载的方式实现了可写层

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

    1、简述RAID0、RAID1、RAID5、RAID10的区别?

    RAID0

    RAID0是将两个以上的磁盘并联起来,成为一个大容量的磁盘。在存放数据时,分段后分散存储在这些磁盘中。

    RAID0读写时都可以并行处理,因此速度是最快的,但RAID 0既没有冗余功能,也不具备容错能力,如果一个磁盘损坏,所有数据都会丢失。

    RAID1

    RAID1是将两组磁盘互作镜像,在主磁盘上存放数据的同时也在镜像磁盘上写一样的数据。

    RAID1方案造成了50%的磁盘浪费,但它总是保持一份完整的数据备份,数据安全性很高。其数据读取较单一磁盘来的快,因为数据会从两块磁盘中较快的一块中读出,但写入速度通常较慢,因为数据需要分别写入两块磁盘中并做比较。


    RAID5

    RAID5是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。RAID5至少需要三个磁盘。

    RAID5可以理解为是RAID0和RAID 1的折衷方案。当一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。RAID5具有和RAID0相近的数据读取速度,因为多了一个奇偶校验信息,写入数据的速度相对单独写入一块硬盘的速度略慢。同时由于多个数据对应一个奇偶校验信息,RAID5的磁盘空间利用率要比RAID1高,存储成本相对较便宜。

    RAID10

    RAID10是先创建2个独立的RAID1,然后将这两个独立的RAID1组成一个RAID0,当往这个逻辑RAID中写数据时,数据被有序的写入两个RAID1中。

    RAID10方案具有RAID0和RAID1两者的特性:虽然造成了50%的磁盘浪费,但是它提供了200%的速度和单磁盘损坏的数据安全性,并且当同时损坏的磁盘不在同一RAID1中,就能保证数据安全性。

    回答参考了https://www.cnblogs.com/ivictor/p/6099807.htmlhttps://zh.wikipedia.org/wiki/RAID,图片来自维基百科

     

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

    设主机系统为centos8

    编译安装(参考了第四周作业)

    #! /bin/bash
    
    #disable selinux and firewall
    sed -ri.bak 's/^SELINUX=enforcing/SELINUX=disable/' /etc/selinux/config
    systemctl stop firewalld && systemctl disable firewalld
    
    #download the source code
    download_dir=/usr/local/src
    wget $download_dir/httpd-2.4.43.tar.bz2 https://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.43.tar.bz2
    
    #install dependencies
    dnf install -y gcc make apr-devel apr-util-devel pcre-devel openssl-devel redhat-rpm-config
    
    #add user
    id apache &> /dev/null || useradd -r -u 80 -d /var/www -s /sbin/nologin apache
    
    #unzip and make
    tar xf $download_dir/httpd-2.4.43.tar.bz2 -C $download_dir
    cd $download_dir/httpd-2.4.43
    ./configure --prefix=/usr/local/httpd --sysconfdir=/etc/httpd --enable-ssl
    make && make install
    
    #set PATH and configure
    echo 'PATH=$download_dir/bin:$PATH' > /etc/profile.d/httpd.sh
    source /etc/profile.d/httpd.sh
    sed -ir 's/^(User).*/1 apache/' /etc/httpd/httpd.conf
    sed -ir 's/^(Group).*/1 apache/' /etc/httpd/httpd.conf
    
    apachectl start

    yum安装

    #! /bin/bash
    
    #disable selinux and firewall
    sed -ri.bak 's/^SELINUX=enforcing/SELINUX=disable/' /etc/selinux/config
    systemctl stop firewalld && systemctl disable firewalld
    
    #use aliyun mirror
    rm -f /etc/yum.repos.d/*
    wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/Centos-7.repo
    
    #yum install
    yum install -y httpd
    echo hello world > /var/www/html/index.html
    systemctl start httpd

    3、通过dockerfile实现nginx的部署

    //创建并进入目录~/homework/dockerfile/nginx

    //下载nginx编译文件

    root@aseal:~/homework/dockfile/nginx# wget http://nginx.org/download/nginx-1.16.1.tar.gz

    //编写dockerfile

    root@aseal:~/homework/dockfile/nginx# cat Dockerfile

    FROM centos:7

    ADD nginx-1.16.1.tar.gz /usr/local/src

    RUN yum -y install wget && rm -f /etc/yum.repos.d/* && wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/Centos-7.repo
    && wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo
    && yum -y install 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 systemd-devel zlib-devel
    && yum clean all
    && rm -f /etc/localtime
    && ln -s ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime

    && cd /usr/local/src/nginx-1.16.1

    && ./configure --prefix=/apps/nginx
    && make && make install
    && rm -rf /usr/local/src/nginx*
    && useradd -r nginx
    && ln -s /apps/nginx/sbin/nginx /usr/sbin/nginx
    EXPOSE 80 443
    CMD ["nginx","-g","daemon off;"]

    //制作镜像并运行

     root@aseal:~/homework/dockfile/nginx# docker build -t nginx-centos7:v1 .

     root@aseal:~/homework/dockfile/nginx# docker run -d -p 80:80 nginx-centos7:v1

     //验证镜像制作正确 

    root@aseal:~/homework/dockfile/nginx# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    3a5b96e6c5f1 nginx-centos7:v1 "nginx -g 'daemon of…" 4 seconds ago Up 3 seconds 0.0.0.0:80->80/tcp, 443/tcp suspicious_vaughan
    root@aseal:~/homework/dockfile/nginx# curl 127.0.0.1
    ...

    <h1>Welcome to nginx!</h1>

    ...

    //nginx镜像制作完成

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

    三次握手(Three-way Handshake),是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个包。三次握手的目的是连接服务器指定端口,建立 TCP 连接,并同步连接双方的序列号和确认号,交换 TCP 窗口大小信息。

    第一次握手(SYN=1, seq=x):

    客户端发送一个 SYN 标志位置1的包,指明客户端打算连接的服务器的端口,以及初始序列号(ISN,init seq num)x,保存在Sequence Number字段里。

    发送完毕后,客户端进入 SYN_SEND 状态。

    第二次握手(SYN=1, ACK=1, seq=y, ACKnum=x+1):

    服务器发回确认包(ACK)应答。即 SYN 标志位和 ACK 标志位均为1。服务器端选择自己的初始序列号(ISN)y,放到 Sequence Number字段里,同时将Acknowledgement Number字段设置为客户的ISN加1,即x+1。

    发送完毕后,服务器端进入 SYN_RCVD 状态。

    第三次握手(ACK=1,ACKnum=y+1)

    客户端再次发送确认包(ACK),SYN 标志位为0,ACK 标志位为1,并且把服务器的ISN+1,即y+1,作为返回的Acknowledgement Number。

    发送完毕后,客户端进入 ESTABLISHED 状态,当服务器端接收到这个包时,也进入 ESTABLISHED 状态,TCP 握手结束。

    回答参考了https://hit-alibaba.github.io/interview/basic/network/TCP.htmlhttps://zhuanlan.zhihu.com/p/53374516

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

    //将本地的时间localtime文件复制到容器内即可

    docker cp /etc/localtime CONTAINERID:/etc/localtime

  • 相关阅读:
    formData实现图片上传
    input[type='file']样式美化及实现图片预览
    第一个Vue插件从封装到发布
    lastIndex对正则结果的影响
    使用图片地图减少HTTP请求数量
    实现文字颜色渐变
    vue-cli中如何引入jquery
    事件处理详解
    图片载入状态判断及实现百分比效果loading
    页面加载时触发的事件及顺序
  • 原文地址:https://www.cnblogs.com/gehaibao/p/13479492.html
Copyright © 2020-2023  润新知