zoukankan      html  css  js  c++  java
  • 第二阶段考试

    一、选择题

    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 -anp

    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 | head -n 200

    B、cat file 1 | 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、使用命令的输出

    二、填空题

    1、在Linux中,某文件的权限为:drw-r--r--,该权限用数值形式表示为(644),修改文件权限用(chmod)命令。

    2、在Linux系统中,以(文件的)方式访问设备

    3、链接分别为(硬链接)和(软链接

    4、(NAT)可以实现动态IP地址分配

    5、DNS实际上是分布在Internet上的主机信息的数据库,其作用是(FQDN)和(IP地址)之间的转换

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

    7、DHCP是动态主机配置协议的简称,其作用是:(服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码)

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

    9、docker和虚拟机的区别在于虚拟机有(完整的操作系统

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

    三、操作题

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

    答:

    Raid0:条带卷,将数据分为固定大小的数据块,分别同时写入到N个磁盘中,即每个磁盘只需读写1/N的数据,提高了读写效率。但是数据没有冗余,一旦有块磁盘故障,整份数据都将不可用,安全性没有保障

    Raid1:镜像卷,将数据写入到N个磁盘中,即每个磁盘都有一份完整的数据。相当于写了N份数据,写磁盘效率很低,读磁盘可从N个磁盘中同时读取,读磁盘效率提升,当一个磁盘损坏,还有其他的磁盘作为备份,数据安全性得到保障

    Raid5:至少需要3块磁盘,将数据分为固定大小的数据块,分别写到N-1块磁盘中,剩余的一块用于生成校验信息,当有一块磁盘故障时,可以通过校验信息还原数据,由于校验信息的压力比较大,故所有磁盘轮流循环作为校验盘。这样即保障了读写效率也保障安全性

    Raid10:先将磁盘组合为多组raid1,用于生成数据冗余,再将这多组raid1组合为raid0,用于提高读写效率,所以Raid10至少要4块磁盘。以4块磁盘为例:数据会被分为n份,分别写入到2组raid0中,然后每份数据又被写2次,写入到raid1的2块磁盘中。这样每份数据都有冗余

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

    #!/bin/bash
    set -ue
    RED='e[1;31m'
    GREEN='e[1;32m'
    END='e[0m'
    
    
    rpm -q httpd &> /dev/null && echo -e "${RED}httpd已经部署,无需安装${END}"
    
    #yum安装依赖程序
    yum install -y apr apr-devel apr-util-devel pcre-devel gcc make openssl-devel lbzip2 redhat-rpm-config
    
    #下载并解压源码包
    wget -P /usr/local/src https://mirrors.aliyun.com/apache/httpd/httpd-2.4.46.tar.bz2 && cd /usr/local/src || echo -e "${RED}下载httpd源码包失败,请检查网络${END}"
    tar xf httpd-2.4.46.tar.bz2 && cd httpd-2.4.46
    ./configure --prefix=/apps/httpd --sysconfdir=/etc/httpd --enable-ssl && make && make install
    echo -e "${GREEN}httpd安装成功${END}"
    
    #创建apache用户
    useradd -r -s /sbin/nologin -d /var/www apache
    sed -ri.bak 's/^User.*/User apache/' /etc/httpd/httpd.conf
    sed -ri.bak 's/^Group.*/Group apache/' /etc/httpd/httpd.conf
    #配置环境 echo
    'PATH=/apps/httpd/bin:$PATH' > /etc/profile.d/httpd.sh echo -e "${GREEN}请重新读取配置文件/etc/profile.d/httpd.sh,之后可执行 apachectl start 或 httpd -k start 命令启动httpd服务${END}"

    3、通过dockerfile实现nginx的部署

    答:

    准备相关文件

    [root@ubuntu1804 dockerfile]#ls
    Dockerfile  index.html  nginx-1.16.1.tar.gz  nginx.conf
    [root@ubuntu1804 dockerfile]#cat nginx.conf 
    
    user  nginx;
    worker_processes  1;
    ...

    编写Dockerfile文件

    [root@ubuntu1804 dockerfile]#vim Dockerfile 
    
    FROM    centos
    LABEL   maintainer="jojohyj"
    RUN     yum install -y gcc gcc-c++ make 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=/apps/nginx 
    &&      make && make install 
    &&      rm -rf /usr/local/src/nginx* 
    &&      ln -s /apps/nginx/sbin/nginx /usr/sbin/nginx
    #COPY   nginx.conf /apps/nginx/conf/
    COPY    index.html /apps/nginx/html/
    EXPOSE  80 443
    CMD     ["nginx","-g","daemon off;"]

    生成nginx镜像

    [root@ubuntu1804 dockerfile]#docker build --force-rm -t nginx:centos .
    
    [root@ubuntu1804 dockerfile]#docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               centos              0f8801ce8afd        7 minutes ago       395MB
    centos              latest              0d120b6ccaa8        2 days ago          215MB

    生成容器测试

    [root@ubuntu1804 dockerfile]#docker run -d -p 80:80 nginx:centos 
    eeddc9c6faf40812a12060534c3e452b92369d0d98185e3cdfd84f3fcdbc0bc9
    [root@ubuntu1804 dockerfile]#docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
    eeddc9c6faf4        nginx:centos        "nginx -g 'daemon of…"   4 seconds ago       Up 3 seconds        0.0.0.0:80->80/tcp, 443/tcp   affectionate_leakey
    [root@ubuntu1804 dockerfile]#curl 127.0.0.1
    nginx base on centos

    4、简述TCP三次握手过程

    答:

    第 1 次握手:客户端向服务器发送 SYN 报文(SEQ=x,SYN=1),并进入 SYN_SENT 状态,等待服务器确认

    第 2 次握手实际上是分两部分来完成的,即 SYN+ACK(请求和确认)报文。

    • 服务器收到了客户端的请求,向客户端回复一个确认信息(ACK=x+1)。
    • 服务器再向客户端发送一个 SYN 包(SEQ=y)建立连接的请求,此时服务器进入 SYN_RECV 状态

    第 3 次握手:客户端收到服务器的回复(SYN+ACK 报文)。此时,客户端也要向服务器发送确认包(ACK)。此包发送完毕客户端和服务器进入 ESTABLISHED 状态,完成 3 次握手

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

    答;

    进入容器,删除原有localtime文件,建立正确时区文件的软链接为新的localtime文件

    [root@ubuntu1804 dockerfile]#docker exec -it ee bash
    [root@eeddc9c6faf4 /]# date
    Thu Aug 13 05:53:50 UTC 2020
    [root@eeddc9c6faf4 /]# rm -f /etc/localtime 
    [root@eeddc9c6faf4 /]# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    [root@eeddc9c6faf4 /]# date
    Thu Aug 13 13:54:39 CST 2020
    [root@eeddc9c6faf4 /]# 
  • 相关阅读:
    一个简单实现的string类
    Python基础(二)
    Python基础(一)
    区块链初探
    某电商平台开发记要——客服系统
    某电商平台开发记要
    Upload files to aliyunOSS with bootstrap-fileinput
    jquery.validate[.unobtrusive]和Bootstrap实现tooltip错误提示
    PostgreSQL笔记
    天冷了,那些树还好吗?
  • 原文地址:https://www.cnblogs.com/jojohyj/p/13496052.html
Copyright © 2011-2022 走看看