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–,该权限用数值形式表示为(622),修改文件权限用(chmod)命
令。
2、在Linux 系统 中,以(文件)方式访问设备 。
3、链接分为:(软连接) 和 (硬链接)。
4、(DHCP)可以实现动态 IP 地址分配。
5、DNS 实际上是分布在internet 上的主机信息的 数据库 ,其作用是(域名)和(IP)之间的转换。
6、当LAN 内没有条件建立DNS 服务器,但又想让局域网内的用户可以使用计算机名互相访问时,应配
置 (/etc/host) 文件。
7、DHCP 是动态主机配置协议的简称,其作用是:(用于内部网络和网络供应商给用户自动提供ip地址) 。
8、 唯一标识每一个用户的是 (uid) 和 (用户名) 。
9、docker和虚拟机的区别在于虚拟机有(内核)。
10、docker采用了一种(容器目录和宿主机磁盘目录对应的方式)挂载的方式实现了可写层
三、操作题一共5道、一题8分。
1、简述Raid0、Raid1、Raid5、Raid10的区别?
RAID 0:最少需要两块磁盘;数bai据条带式分布;没du有冗余,性能最佳(不存储镜像、校验信息);不能应用于对数据安全性要求高的场合。
RAID 1:最少需要两块磁盘;提供数据块冗余;性能好。
RAID 5:最少需要三块磁盘;数据条带形式分布;以奇偶校验作冗余;适合多读少写的情景,是性能与数据冗余最佳的折中方案。
RAID 10(又叫RAID 1+0):最少需要四块磁盘;先按RAID 0分成两组,再分别对两组按RAID 1方式镜像;兼顾冗余(提供镜像存储)和性能(数据条带形分布)。
2、通过shell脚本部署一个httpd服务。
#!/bin/bash
rm -rf /usr/local/src/*
dnf remove -y gcc make autoconf apr-devel apr-util-devel pcre-devel openssl-devel redhat-rpm-config
systemctl disabled --now firewalld.service
sed -i.bak 's/^SELINUX=.*/SELINUX=disabled/'/etc/selinux/config
setenforce 0
dnf install -y gcc make autoconf apr-devel apr-util-devel pcre-devel openssl-devel redhat-rpm-config
wget https://mirror.bit.edu.cn/apache//httpd/httpd-2.4.43.tar.bz2
tar xvf httpd-2.4.43.tar.bz2 -C /usr/local/src
cd /usr/local/src/httpd-2.4.43/
./configure --prefix=/apps/httpd --sysconfdir=/etc/httpd --enable-ssl
make -j 4 && make install
echo 'PATH=/apps/httpd/bin:$PATH' > /etc/profile.d/httpd.sh
. /etc/profile.d/httpd.sh
sed -i.bak 's/^User.*/User apache/;s/^Group.*/Group apache/;/^Server.*/a ServerName localhost:80' /etc/httpd/httpd.conf
userdel apache
useradd -r -s /sbin/nologin -d /var/www/ -c Apache -u 48 apache
apachectl start
3、通过dockerfile实现nginx的部署
#设置继承基础镜像
’FROM centos ‘
#创建者的基本信息 ’
MAINTAINER bovin@dingtalk.com
#解决依赖关系
RUN yum install -y make gcc openssl-devel pcre-devel zlib-devel
#添加nginx用户
RUN groupadd -r nginx && useradd -r -g nginx -s /bin/false -M nginx
#添加nginx安装包,并默认解压
ADD nginx-1.6.2.tar.gz /usr/local/src/
#添加启动nginx服务脚本
ADD run.sh /run.sh #定义工作目录 WORKDIR /usr/local/src/nginx-1.6.2/
’#执行命令进行安装
RUN ./configure
--prefix=/usr/local/nginx
--sbin-path=/usr/sbin/nginx
--conf-path=/etc/nginx/nginx.conf
--error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log
--pid-path=/var/run/nginx/nginx.pid
--lock-path=/var/lock/nginx.lock
--user=nginx
--group=nginx
--with-http_ssl_module
--with-http_flv_module && make && make install #定义输出命令 CMD ["/run.sh"] #定义输出端口 EXPOSE 80
设置脚本权限:
chmod +x run.sh
脚本功能主要作为设置进程模式,启动nginx服务。查看脚本内容如下:
#!/bin/bash
sed -i '/daemon off/d' /etc/nginx/nginx.conf
#设置nginx非daemon守护进程
echo "daemon off;" >> /etc/nginx/nginx.conf
#杀掉nginx服务
killall nginx
#启动nginx服务
/usr/sbin/nginx -c /etc/nginx/nginx.conf
执行build构建我们的nginx镜像:
[root@centos7 nginx]# docker build -t nginx.state . Sending build context to Docker daemon 809kB Step 1/10 : FROM centos ---> 5182e96772bf Step 2/10 : MAINTAINER bovin@dingtalk.com ---> Running in 027b9d3def9c ---> 7c31e176f688 Removing intermediate container 027b9d3def9c Step 3/10 : RUN yum install -y make gcc openssl-devel pcre-devel zlib-devel ---> Running in 1c83d9b31aed Loaded plugins: fastestmirror, ovl
查看我们刚刚构建的nginx镜像:
使用刚才构建nginx镜像,创建容器:
[root@centos7 nginx]# docker run -d -p 80:80 nginx.state 744ce4da6839177e057e34f47871f3763bcd7d9bc6488647e5ea93826cc1ed05 [root@centos7 nginx]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 744ce4da6839 nginx.state "/run.sh" 6 seconds ago Up 5 seconds 0.0.0.0:80->80/tcp dazzling_turing
4、简述TCP三次握手的过程?
第一次握手:客户端发送SYN,seq为随机值,ctl=SYN ,SYN为同步序列号
客户端发送网络包,服务端收到了,服务端得出结论,客户端有发送的能力,服务端能力是正常的。
第二次握手:服务端收到SYN之后向客户端发送SYN和ACK,seq随机产生,ctl为=SYN,ack=seq+1
服务端发包给客户端,客户端接收到,客户端的出结论,服务端的接收和发送能力是正常的,不过此时服务端不能判断出客户端的接收能力是不是正常。
第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态。
客户端发包,服务端接收到,这样服务端能够得出结论,客户端的接收和发送能力正常,服务器自己的发送能力也正常。
5、docker容器时间跟本地时间不一致怎样解决
#删除默认的·链接上的UTC的时间
rm -f /etc/localtime
#改为上海的时间
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date