一 、判断题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 服务器,但又想让局域网内的用户可以使用计算机名互相访问时,应配
置 (/etc/hosts) 文件。
7、DHCP 是动态主机配置协议的简称,其作用是:(自动给局域网内的机器分配IP地址) 。
8、 唯一标识每一个用户的是 (uid) 和 (用户名) 。
9、docker和虚拟机的区别在于虚拟机有(内核)。
10、docker采用了一种(容器目录和宿主机磁盘目录对应的方式 -v)挂载的方式实现了可写层
三、操作题一共5道、一题8分。
1、简述Raid0、Raid1、Raid5、Raid10的区别?
Radi0:最RAID0技术把多块(至少两块)物理硬盘设备通过软件或硬件的方式串联在一起,组成一个大的卷组,并将数据依次写入到各个物理硬盘中。这样,在最理想的情况下,硬盘设备的读写性能会提升数倍,但是若任意一块硬盘发生故障将导致整个系统的数据都受到破坏。虽然,RAID0技术能够有效的提升硬盘数据的吞吐速度,但是不具备数据备份和错误修复能力
Radi1:最少2块银盘,2N。有冗余能力,读写性能下降。把两块以上的硬盘设备进行绑定,在写入数据时,是将数据同时写入到多块硬盘设备上(可以将其视为数据的镜像或备份)。当其中某一块硬盘发生故障后,一般会立即自动以热交换的方式来恢复数据的正常使用。
Raid5:读写性能提升,最少3,3+块硬盘。RAID5技术是把硬盘设备的数据奇偶校验信息保存到其他硬盘设备中。RAID5磁盘阵列组中数据的奇偶校验信息并不是单独保存到某一块磁盘设备中,而是存储到除自身以外的其他每一块应哦按设备上,这样的好处是其中任何一个设备损坏后不至于出现致命缺陷,就是RAID5技术实际上没有备份磁盘中的真实数据信息,而是当硬盘设备出现问题后通过奇偶校验信息来尝试重建损坏的数据。RAID5这样的技术特性“妥协”的兼顾了硬盘设备的读写速度、数据安全性与存储成本问题。
Raid10:读写性能提升,每组镜像最多只能坏一块,最少需要4块硬盘,4+,RAID10即RAID0+RAID1的一个组合体。RAID10技术需要至少4块硬盘来组建,其中先分别两两制作成RAID1磁盘阵列,以保证数据的安全性;然后再对两个RAID1次哦按阵列实施RAID0技术,进一步提高硬盘设备的读写速度。这样从理论上讲,只要坏的不是同一组中的所有磁盘,那么最多可以损坏50%的硬盘设备而不丢失数据。
2、通过shell脚本部署一个httpd服务。
vim httpd_install.sh
#!/bin/bash
echo "开始安装httpd"
sleep 5
dnf -y install gcc make autoconf apr-util-devel pcre-devel openssl-devel readhat-rpm-config &> /dev/null
wget https://mirror.bit.edu.cn/apache//httpd/httpd-2.4.43.tar.bz2 &> /dev/null
[ -e httpd-2.4.43.tar.bz2 ] && tar -xvf httpd-2.4.43.tar.bz2 || echo "您还没有httpd安装包";exit 1
tar xvf httpd-2.4.43.tar.bz2 -C /usr/local/src/ &> /dev/null
#进入目录cd /usr/local/src/ httpd-2.4.43
#编译安装 ./configure --prefix=/apps/httpd --sysconfdir=/etc/httpd --enable-ss
make && make install
#设置环境变量 echo 'PATH=$PATH:/apps/httpd/bin' > /etc/profile.d/httpd.sh
#执行环境变量 . /etc/profile.d/httpd.sh
# 创建apache用户 useradd -r -s /sbin/nologin -d /var/www -c Apache -u 48 apache
#更改默认启动httpd用户 sed -i 's/User daemon/User apache' /etc/httpd/httpd.conf
#更改用户组 sed -i 's/Group daemon/Group apache/' /etc/httpd/httpd.conf
apachectl start &> /dev/null && echo "httpd安装并启动成功" || echo "httpd启动失败"
3、通过dockerfile实现nginx的部署
下载nginx的tar包 wget http://nginx.org/download/nginx-1.16.1.tar.gz
[root@ubuntu1804 1.16.1]$vim Dockerfile
FROM centos:centos7.7.1908
MAINTAINER zhangzexu
RUN yum install -y gcc gcc-c++ pcre pcre-delvel 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*
ADD nginx.conf /apps/nginx/conf/nginx.conf
COPY index.html /apps/nginx/html/
RUN ln -s /apps/nginx/sbin/nginx /usr/sbin/nginx
EXPOSE 80 443
CMD ["nginx","-g","daemon off;"]
vim index.html 添加一个index页面
docker build -t nginx-centos7:v1 .
运行容器 docker run -it -d -p 80:80 nginx-centos7:v1
[root@ubuntu1804 ~]$curl 127.0.0.1
nginx is in docker
[root@ubuntu1804 ~]$
4、简述TCP三次握手的过程?
(1)第一次握手:Client将标志位SYN((同步序列编号(Synchronize Sequence Numbers))置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
(2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
(3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
5、docker容器时间跟本地时间不一致怎样解决
rm -f /etc/localtime 删除默认链接的UTC时间
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 创建软连接到上海时间
date 查看时间已经变成上海的时间