M43 第一阶段考试
一。解答题
1、统计当前主机的TCP协议网络各种连接状态出现的次数
netstat -an | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
netstat -nat | sed -nr '/^tcp/p' | sed -nr 's/.* ([[:alpha:]]+).*/\1/p' |sort
|uniq -c
ss -tan |tail -n +2|cut -d" " -f1|sort| uniq -c
2、编译源码包过程介绍。采用源码包编译的方式安装软件包时,有哪些基本过程、各自的作用是什么?
tar 解包:解压、释放安装包内的文件
./configure 配置:针对当前系统环境指定安装目录、选择功能等设置。
make 编译:将源代码编译成二进制的可执行程序、库文件等数据。
make install:将编译好的程序文件、配置文档等复制到对应的安装目录。
3、 为什么说 TCP 协议比 UDP 协议通讯更可靠,并简述 TCP 三次握手和四次挥手的网络连接和断开过
程。
由于 TCP 协议是基于连接的,具备数据收发确认效验机制,因此他比 UDP 协议通信可靠。
三次握手:
- 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client
进入SYN_SENT状态,等待Server确认。
- 第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK
都置为1 ack=J+1,随机产生一个值seq=K, 并将该数据包发送给Client以确认连接请
求,Server进入SYN_RCVD状态。
- 第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,
ack=K+1,并将该数据包发送给Server,Server 检查ack是否为K+1,ACK是否为1,如
果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server
之间可以开始传输数据了。
四次挥手:
- 第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1
状态。
- 第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个
FIN占用一个序号),Server进入CLOSE_WAIT状态。
- 第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状
态。
- 第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号
为收到序号+1,Server进入CLOSED状态,完成四次挥手
4、 请简述将一块 100G 新硬盘插入服务器, 创建EXT4的逻辑卷1G,并配置挂载到 /data/log/,使用一段时
间空间不足,扩容到2G
看最后
5, 如何配置linux系统的环境变量,如何配置Linux系统的指定用户的环境变量。
系统环境变量:/etc/profile /etc/bash.bashrc /etc/environment #配置系统变量影响所有人
用户环境变量:~/profile ~/.bashrc ~/.bash_profile #配置指定用户的环境变量
不会影响到其他用户
6、检测网络状态一般用哪些指令,请例举。并说明具体用途?(俩种以上)
连接测试命令ping
说明:ping命令是windows的自带命令,它基于ICMP协议。通过ping命令的返回信息,可以判断能否连接远
程主机,并且看到连接远程主机的延迟时间。
网络连接状态命令netstat
说明: netstat 是一-个TCP/IP监控命令,它可以显示本机的核心路由表、实际的网络连接、开启的端口列
表,以及统计IP、TCP、UDP、和ICMP协议相关的通信流量。
路由表管理命令route
说明:使用route命令可以显示和修改本地路由表。入侵远程主机后,可以使用route命令来修改该主机在内网
的数据包流向,以便侦听内网明文传输的信息,偷窃其他内网用户的网络密码。
7、写出在 CentOS7.6 操作系统上创建系统用户 apache 的命令,要求其用户 id 和组 id 为 799
[root@localhost ~]# groupadd apache -g 799
[root@localhost ~]#
[root@localhost ~]# useradd -r apache -u 799 -g 799
[root@localhost ~]#
[root@localhost ~]# id apache
uid=799(apache) gid=799(apache) groups=799(apache)
8、请简述一下硬链接和软连接的区别和各自的特点
1.本质:硬链接:是一个文件,软连接 :不是一个文件
2. 跨设备 硬链接:不支持,软连接:支持
3. inode : 硬链接:相同,软连接: 不同
4. 链接数 :硬链接:创建新的硬链接,链接数会增加,删除硬链接,链接数会减少,软连接:创建或删除,
连接数不会变化
5. 文件夹:硬链接:不支持,软连接:支持
6.相对路径: 硬链接,原始文件相对路径是相对当前工作目录的,软连接:原始文件的相对路径是相对与链
接文件的相对路径
7. 删除源文件:只是链接数减1,但是链接文件的访问不受影响,软链接:链接文件将无法访问
8. 文件类型,硬链接:和源文件相同,软连接:链接文件,和源文件无关
9.文件大小:硬链接:和源文件相同,软链接:源文件的路径的长度
9、请简述一下 IP 地址分类和各自的私网或特殊地址范围
参考答案:
ipv4地址分为5类,分别是
A: 0.0.0.0-127.255.255.255
其中 0.0.0.0 和 127.x.x.x 是本地回环地址
10.x.x.x 是私网地址
B: 128.0.0.0-191.255.255.255
其中172.16.x.x---172.31.x.x 是私网地址
C: 192.0.0.0-223.255.255.255
其中192.168.X.X 是私网地址
D: 224.0.0.0-239.255.255.255
该类地址不分网络地址和主机地址,第一个字节以“1110”开始,它是一个专门保留的地址。
该类地址主要用于多点广播Multicast之中作为多播组IP地址
E: 240.0.0.0-255.255.255.255,其中段255不可用
该类地址不分网络地址和主机地址,地址是以“1111”开始,他的第一字节的范围是240~255,为将来使
用保留
10、请使用文本处理命令打印出 /etc/init.d/functions 的所有函数名称
cat /etc/init.d/functions | sed -nr 's/\{$//p'
cat /etc/init.d/functions | grep "^[a-zA-Z_]\+() {" | cut -d "(" -f1
cat /etc/init.d/functions | grep "()" | sed -nr 's/(.*)\(.*/\1/p'
cat /etc/init.d/functions | grep "() {" | sed -nr "s/(.*)\(\) \{$/\1/p"
cat /etc/rc.d/init.d/functions | egrep '^(_|[a-z])+ ?\(\)'
cat /etc/init.d/functions | sed -nr 's#(.*)\(\) .*#\1#p'
cat /etc/init.d/functions | grep "()"|awk '{print $1}'
egrep "[_[:alpha:]]+\(\)" /etc/rc.d/init.d/functions
cat /etc/rc.d/init.d/functions | egrep '^(_|[a-z])+ ?\(\)'
11、请分别简述几种常见的 raid 模式,并简述一下他们各自的特点
RAID0: 是一种简单的、无数据校验的数据条带化技术,可将多个磁盘合并成一个使用,容量大,读写速度
快。
RAID1: 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像磁盘,它的磁盘空间利用率为 50%
RAID5: 使用数据校验功能的,校验数据分布在阵列中的所有磁盘上,当有一块磁盘损坏时可以使用检验数
据恢复,恢复数据是磁盘比较慢,
日常使用频率较高的RAID模式,是 RAID0 和 RAID1 的折中方案
RAID01:先做镜像,然后内部再做条带,比RAID10有跟好的容错性能,磁盘空间利用率50%
RAID10:先做条带,然后内部再做镜像,磁盘空间利用率50%。比RAID10 风险高,当有一组RAID故障时,
数据丢失不可用。
12 , 创建网桥br0,配置IP为10.0.0.123/24,并将eth0,eth1加入网桥,持久保存上面配置
nmcli con add type bridge con-name br0 ifname br0
nmcli connection modify br0 ipv4.addresses 10.0.0.123/24 ipv4.method manual
nmcli con up br0
nmcli con add type bridge-slave con-name br0-port0 ifname eth0 master br0
nmcli con add type bridge-slave con-name br0-port1 ifname eth1 master br0
nmcli con up br0-port0
nmcli con up br0-port1
13 抓取从源地址为10.0.0.111主机访问目标主机10.0.0.222的80/tcp端口的流量?
tcpdump -i eth0 -nn src host 10.0.0.111 and dst host 10.0.0.222 and tcp port 80
14 主机202.192.33.160/28的子网掩码是什么,所在网段最多有多个主机?
子网掩码:255.255.255.240
所在网段最多有32-28=4,2^4-2=14
二。扩展题
1、写一个脚本,实现批量添加20个用户,用户名为:user1-20,密码为user后面跟着几个随机字符或数
字。
#!/bin/bash
for i in `seq 1 20`;do
useradd user$i
echo "user`echo $RANDOM |md5sum|head -c 6`"| passwd --stdin user$i &>
/dev/null
done
2、编写一键编译安装httpd的脚本
#!/bin/bash
#解决依赖
yum -y install wget gcc gcc+ pcre-devel apr-devel apr-util-devel
yum -y groupinstall "Development Tools"
#下载 apache 安装包
wget https://mirror.bit.edu.cn/apache/httpd/httpd-2.4.46.tar.gz
#解压安装包
tar -xvf httpd-2.4.46.tar.gz && cd httpd-2.4.46
#生成 makefiel
./configure --prefix=/app/httpd
#开始编译
make && make install
#启动 apache
/app/httpd/bin/apachectl
#通过过滤端口 80 已经打开
[09:57:18 root@a7 ~]#lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 32963 root 4u IPv6 43432 0t0 TCP *:http (LISTEN)
httpd 33015 daemon 4u IPv6 43432 0t0 TCP *:http (LISTEN)
3,数字答案为 1 到 100 的随机数,执行脚本后等待用户输入数字,若猜中则结束游戏,未猜中则返回答
案和所输入数字的大小关系,最多可以猜5次,5次均未猜中则结束游戏
[root@localhost ~]# cat guess.sh
#!/bin/bash
randomNum=`expr $RANDOM % 100`
echo $randomNum
for((i=1;i<=5;i++)){
read -p "please input a number: " myNum
if [ $myNum -ne $randomNum ];then
if [ $myNum -gt $randomNum ];then
echo "please input a smaller number"
else
echo "please input a bigger number"
fi
else
echo "you win the game , randomNumber is $randomNum"
exit
fi
}
4,如何实现主机之间跨路由跨网段通讯。实验:主机A <<----- router1-----router2------>>主机B
主机A:
172.18.0.111/16
GATEWAY:172.18.0.200
router1:
eth0:172.18.0.200/16
eth1:192.168.6.200/24
router2:
eth0:192.168.38.200/24
eth1:192.168.6.201/24
主机B:192.168.38.222/24
GATEWAY:192.168.38.100
主机A:设置为桥接
路由1:设置eth0为桥接,eth1设置为仅主机
路由2:设置eth0为桥接,eth1为NAT
主机B:设置为NAT
#1、 更改所有机器ip
主机A:更改eth0 ip为172.18.0.111/16 gateway:172.18.0.200
重启network服务
route -n 查看路由信息
router1:修改eth0 ip为172.18.0.200/16
eth1 ip为192.168.6.200/24
重启network服务
router2:修改eth0 ip为192.168.38.200/24
eth1 ip为192.168.6.201/24
重启network服务
主机B:更改eth0 ip为192.168.38.222/24 gateway:192.168.38.100
重启network服务
route -n 查看路由信息
相邻机器之间可以ping通表示配置没有问题
#2 配置路由
router1:添加网络路由 route add -net 192.168.38.0/24 gw 192.168.6.201 dev eth1
或 添加默认路由 route add default gw 192.168.6.201
route -n 查看路由信息
router2:添加网络路由 route add -net 172.18.0.0/16 gw 192.168.6.200 dev eth1
route -n 查看路由信息
#3 linux系统默认不会做转发报文,因此需要添加路由转发选项
cat /proc/sys/net/ipv4/ip_forward
默认为0表示禁用
router1:
echo > 1 /proc/sys/net/ipv4/ip_forward
router2:
echo > 1 /proc/sys/net/ipv4/ip_forward
主机B: ping 172.18.0.111 连通即可
5. 简述OSI协议和TCP/IP协议的对应分层功能及相关协议
第四题答案
1.添加硬盘,模拟100G
2.查看是否成功添加磁盘
[root@master01 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 100G 0 part /
├─sda3 8:3 0 2G 0 part
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 50G 0 part /data
sdb 8:16 0 100G 0 disk #新添加的100G磁盘
sr0 11:0 1 4.3G 0 rom
3.实现逻辑卷
3.1 创建物理卷
1.#先安装相关工具
[root@master01 ~]# yum install -y lvm2
2.#创建物理卷
[root@master01 ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
3.#查看物理卷简要信息
[root@master01 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 --- 100.00g 100.00g #可以看到物理卷为100G
[root@master01 ~]# pvdisplay /dev/sdb #查看物理卷详细信息
"/dev/sdb" is a new physical volume of "100.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb
VG Name
PV Size 100.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID Qa7eTs-fam8-8u2E-c8DG-oGUJ-4xPX-afpBbA
3.2 创建卷组
[root@master01 ~]# vgcreate -s 16M vg0 /dev/sdb
Volume group "vg0" successfully created
#-s 16M,指定pe大小为16M
[root@master01 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg0 1 0 0 wz--n- 99.98g 99.98g
3.3 创建逻辑卷
[root@master01 ~]# lvcreate -n mydata -L 1G vg0 #创建1G的逻辑卷
Logical volume "mydata" created.
[root@master01 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync
Convert
mydata vg0 -wi-a----- 1.00g
3.4 创建文件系统
[root@master01 ~]# mkfs.ext4 /dev/vg0/mydata
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
3.5 对逻辑卷进行挂载
#先创建挂载点
[root@master01 ~]# mkdir /data/log
[root@master01 ~]# mount /dev/vg0/mydata /data/log/
[root@master01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 100G 3.3G 97G 4% /
devtmpfs 900M 0 900M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 12M 899M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda5 50G 33M 50G 1% /data
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 182M 0 182M 0% /run/user/0
/dev/mapper/vg0-mydata 976M 2.6M 907M 1% /data/log #已经挂载
4.实现逻辑卷扩容
因为使用一段时间后,导致空间不足,所以要进行扩容,扩容到2G
1.#空间扩展
[root@master01 ~]# lvextend -L +1G /dev/vg0/mydata
Size of logical volume vg0/mydata changed from 1.00 GiB (64 extents) to 2.00
GiB (128 extents).
Logical volume vg0/mydata successfully resized.
[root@master01 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync
Convert
mydata vg0 -wi-ao---- 2.00g
2.#文件系统的扩展
[root@master01 ~]# resize2fs /dev/vg0/mydata
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg0/mydata is mounted on /data/log; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vg0/mydata is now 524288 blocks long.
检测是否扩展成功
[root@master01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 100G 3.3G 97G 4% /
devtmpfs 900M 0 900M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 12M 899M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda5 50G 33M 50G 1% /data
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 182M 0 182M 0% /run/user/0
/dev/mapper/vg0-mydata 2.0G 3.0M 1.9G 1% /data/log #可以看到已经扩容到2G
M43 第一阶段考试的更多相关文章
- JAVA EE 第一阶段考试
在第一阶段中我们学习了Spring Struts2 Hibernate.虽然在外面的公司中,公司项目的框架中都不在使用Struts2了.他好像出现了不可修复的bug.但是在学校,依然还是要学习这个.在 ...
- 第一阶段考试:实战Linux系统日常管理
1. [项目名称] 实战Linux系统日常管理 [项目说明] 1.安装部署rhel系统,组建RAID磁盘阵列. 2.安装nginx 通过脚本编写 nginx服务服务启动脚本 [项目考核技能点] 1.安 ...
- 自我总结(六)---(学习j2ee+j2ee第一阶段项目)
自我完善的过程就是在不断的自我总结不断的改进. 学习了Struts2 Spring Hibernate. 十天前结束了这个课程.也考试了.这次考试老师说机试考的还不错.其实就是一个简单的用户登录,进行 ...
- 计算机二级Python(第一阶段)
介绍 本篇文章主要针对于计算机二级考试的崽崽,当然想了解Python和学习Python的崽崽也是可以看本篇文章的:毕竟,手机和电脑都可以运行Python:本篇我文章虽然是笔记,但是也纯靠手打,希望 ...
- PHP四个阶段目标以及第一阶段学习内容
PHP课程体系主要分为四个阶段,第一阶段讲的是网页HTML和数据库MySQL,第一阶段要学会网页制作的基础知识,熟用各种基本标签,对数据库进行操作,各项考核都能够达标,拿出出众的项目展示. 在第二个阶 ...
- Bete冲刺第一阶段
Bete冲刺第一阶段 今日工作: github团队协作流程 web:调整dao层设计,增加新的dao组件 客户端:之前遗留的界面跳转的BUG 目前所遇问题: 第一,COCOAPODS的安装上还是有点问 ...
- java - 第一阶段总结
java - 第一阶段总结 递归 递归:能不用就不用,因为效率极低 package over; //递归 public class Fi { public static void main(Strin ...
- Java第一阶段总结
学习java已经一个多月的时间了,第一阶段总算完成了. 这中间遇到很多问题,通过问同学问学长,收获了很多,但也知道自己和其他同学相差很远.他们java第一阶段只用了不到一个月的时间,而我拖了很长时间, ...
- [原创].NET 业务框架开发实战之十 第一阶段总结,深入浅出,水到渠成(后篇)
原文:[原创].NET 业务框架开发实战之十 第一阶段总结,深入浅出,水到渠成(后篇) .NET 业务框架开发实战之十 第一阶段总结,深入浅出,水到渠成(后篇) 前言:接着上篇来. 系列文章链接: [ ...
随机推荐
- Redis整合MySQL和MyCAT分库组件(来源是我的新书)
MyCAT是一个开源的分布式数据库组件,在项目里,一般用这个组件实现针对数据库的分库分表功能,从而提升对数据表,尤其是大数据库表的访问性能.而且在实际项目里,MyCAT分库分表组件一般会和MySQL以 ...
- 题解 P5401 [CTS2019]珍珠
蒟蒻语 这题太玄学了,蒟蒻写篇题解来让之后复习 = = 蒟蒻解 假设第 \(i\) 个颜色有 \(cnt_i\) 个珍珠. \(\sum\limits_{i=1}^{n} \left\lfloor\f ...
- redis学习之——CentOS 6 下载安装redis
一.检查当前环境: 安装过程中没有这些,命令,在CentOS 6,最小安装导致..如果执行完命令,Noting to do...字样说明环境正常. yum -y install rpm gcc w ...
- CentOS7 扩容磁盘非根分区
CentOS7扩展磁盘分区 因为业务所在分区空间不足,需要扩容.分配磁盘大小为1T但实际使用过程中发现仅使用了500G左右空间,本次计划在原有磁盘上扩容1T,加上之前500G空闲直接扩容1.5TB ...
- OpenShift添加应用健康检查功能
什么是健康检查? 对于部署成功的应用来说,通过访问接口.执行特定命令等方式判断应用是否存活.正常的方式称为健康检查. 在 OpenShift 或 Kubernetes 中,健康检查都有两个探针,分别是 ...
- CSS3全览_最新布局
CSS3全览_最新布局 目录 CSS3全览_最新布局 1. 浮动及其形状 2. 定位 3. 弹性盒布局 4. 栅格布局 5. 表格布局 作者: https://www.cnblogs.com/xiax ...
- Spark 源码浅读-SparkSubmit
Spark 源码浅读-任务提交SparkSubmit main方法 main方法主要用于初始化日志,然后接着调用doSubmit方法. override def main(args: Array[St ...
- SpringDataJPA 多对多的查询
主要的结构目录: 创建Role.java package cn.itcast.domain; import javax.persistence.*; import java.util.HashSet ...
- Flutter InkWell - Flutter每周一组件
Flutter Inkwell使用详解 该文章属于[Flutter每周一组件]系列,其它组件可以查看该系列下的文章,该系列会不间断更新:所有组件的demo已经上传值Github: https://gi ...
- numpy的好处
python是很慢的,因为python在执行代码的时候会执行很多复杂的check功能,比如 b=1; a=b/0.5 这个运算看起来很简单,但是在计算机的内部.b要先从一个整数integer转化成一个 ...