博客第16周

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行的内容?(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的区别?

RAID 0:
最少需bai要两块磁盘;数据条带式分布;没有冗du余,性能最佳(不存储镜像、校验信息);不能应用于对数据安全性要求高的场合。
RAID 1:
最少需要两块磁盘;提供数据块冗余;性能好。
RAID 5:
最少需要三块磁盘;数据条带形式分布;以奇偶校验作冗余;适合多读少写的情景,是性能与数据冗余最佳的折中方案。、
RAID 10(又叫RAID 1+0):
最少需要四块磁盘;先按RAID 0分成两组,再分别对两组按RAID 1方式镜像;兼顾冗余(提供镜像存储)和性能(数据条带形分布);在实际应用中较为常用。

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

#!/bin/bash
######
#Autho: tyzh
#Date: 2020-06-17
######

####安装前检查####
CurrentVersion=`httpd -v|head -1`
colorGreen="33[32m"
colorRed="33[31m"
colorEnd="33[0m"
###判断是否有运行的httpd服务#####
netstat -tnlp|grep httpd
if [ $? = 1 ];then
echo "当前版本为:$CurrentVersion"
read -p "请再次确认,是否要安装httpd2.4.43(yes/no)? $colorend" INPUT
INPUT=`echo $INPUT|tr 'A-Z' 'a-z'`
case $INPUT in
n|no)
exit 1
;;
y|yes)
echo "安装httpd2.4.43准备安装......"
;;
*)
echo 'Input fales,plese input yes or no'
;;
esac
else
echo "警告需要先停掉目前服务,再继续安装,apachectl -k stop"
read -p "请再次确认,是否要安装httpd2.4.43(yes/no)?" INPUT
INPUT=`echo $INPUT|tr 'A-Z' 'a-z'`
case $INPUT in
n|no)
exit 1
;;
y|yes)
echo "安装httpd2.4.43准备安装......"
apachectl -k stop
;;
*)
echo 'Input fales,plese input yes or no'
;;
esac
fi
sleep 5s
####安装依赖####
echo -e "$colorGreen yilai install starting.....$colorEnd"
yum -y install gcc make autoconf apr-devel apr-util-devel pcre-devel openssl-devel redhat-rpm-config
if [ $? = 0 ];then
echo -e "$colorGreen yilai install finished.....$colorEnd"
else
echo -e "$colorRed yilai install false,please check your repo source!$colorEnd"
sleep 10s
exit 1
fi
sleep 5s
######添加apache用户,组#####
group apache
useradd -r -s /sbin/nologin -d /var/www/html apache
####安装httpd2.4.43包####
echo -e "$colorGreen httpd-2.4.43 starting......$colorEnd"
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/
###配置httpd###
./configure --prefix=/usr/local/httpd --sysconfdir=/etc/httpd --enable-ssl
###编译并安装####
make -j 2 && make install
echo -e "$colorGreen httpd-2.4.43 finished......$colorEnd"
####httpd启动环境配置,启动###
echo PATH=/usr/local/httpd/bin:$PATH > /etc/profile.d/httpd.sh
source /etc/profile.d/httpd.sh
sed -i 's/User daemon/User apache/' /etc/httpd/httpd.conf
sed -i 's/Group daemon/Group apache/' /etc/httpd/httpd.conf
###检查安装文件####
apachectl -t
####启动服务####
apachectl -k restart
echo 'httpd 服务已经启动.......'
echo $CurrentVersion


3、通过dockerfile实现nginx的部署

wget  http://nginx.org/download/nginx-1.18.0.tar.gz

#nginx-dockerfile

cat dockerfile 

FROM centos7-base:v1

LABEL maintainer="tyzh <283399535@qq.com>"

RUN yum -y install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
&& useradd -r -s /sbin/nologin nginx
&& yum clean all

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

RUN cd /usr/local/src/nginx-1.18.0
&& mkdir -p /apps/nginx
&& ./configure --prefix=/apps/nginx
&& make
&& make install
&& sed -ri 's@#(user )nobody@1nginx@' /apps/nginx/conf/nginx.conf
&& sed -ri 's@(worker_processes )1@1auto@' /apps/nginx/conf/nginx.conf
&& sed -ri '3a daemon off;' /apps/nginx/conf/nginx.conf
&& echo "nginx is running in docker" > /apps/nginx/html/index.html
&& rm -rf /usr/local/nginx*

RUN ln -s /apps/nginx/sbin/nginx /usr/sbin/nginx

EXPOSE 80 443

CMD /usr/sbin/nginx

#生成nginx镜像

 docker build -t nginx-centos7:1.18.0-v1 .

#查看镜像

doker images

#生成容器测试镜像

docker run --name nginx -d -p 80:80 nginx-centos7:1.18.0-v1

#测试

curl 172.17.0.2:80

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

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 
SYN:同步序列编号(Synchronize Sequence Numbers)
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
5、docker容器时间跟本地时间不一致怎样解决

docefile 定义

RUN rm -f /etc/localtime
&& ln -sv /usr/share/zoneinfo/Asia/Shanhai /etc/localtime
&& echo "Asia/Shanghai" >/etc/timezone  

原文地址:https://www.cnblogs.com/yazhan/p/13462109.html