Linux——最全面试题整理(仅此一篇)

Posted 姜姜是美女

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux——最全面试题整理(仅此一篇)相关的知识,希望对你有一定的参考价值。

1.七层模型、三次握手和四次挥手

①OSI (7层)

应用层——网络服务与最终用户的一个接口**——PC机**

表示层——数据的表示、安全、压缩

会话层——建立、管理、中止会话

传输层——定义传输数据的协议端口号,以及流控和差错校验**——防火墙**

网络层——进行逻辑地址寻址,实现不同网络之间的路径选择**——路由器**

数据链路层——建立逻辑连接、进行硬件地址寻址、差错校验**——交换机**

物理层——建立、维护、断开物理连接**——网卡**

②TCP/IP(5层)

应用层、传输层、网络层、数据链路层、物理层

③TCP/IP(4层)

应用层、传输层、网络层、网络接口层

④TCP 建立连接的过程称为三次握手,为了确认双方收发数据的能力

1.发送方向接收方发送SYN请求

⒉接收方接收到此请求后会主动回复一个ACK,并且同时也发送一个SYN请求

3.发送方接收到接收方发来的SYN请求后,给出一个ACK确认

⑤TCP 断开连接的过程为四次挥手,目的是关闭一个连接

1.发送方向接收方发送一个FIN请求

⒉接收方收到此请求后给出一个ACK确认(半关闭状态)

3.接收方发送一个FIN请求给发送方

4.发送方收到接收方的FIN请求后,回复一个ACK

2.常用的30条命令

1.CPU:
top   cat  /proc/cpuinfo      iostat  -c
2.内存:
vmstat  top  free   meminfo
3.磁盘空间
df   fdisk   du   wc    mkfs   mdadm
4.磁盘I/O
iostat   iotop
5.网络
pingifconfig && ip && addr、iptables && firewall-cmd、 netstat && ss
iftop、 telnet 、 traceroute、 route、 tcpdump、ftp、ssh
6.类型:查询类
cat  head  grep  find  less  more  pwd  which

3.DHCP服务(动态主机配置协议)

①客户机请求IP地址

当一个DHCP客户机启动时,客户机还没有IP地址,所以客户机要通过DHCP获得一个合法的地址,此时的DHCP客户机以广播的方式发送DHCP Discover发现信息来寻找DHCP服务器

②服务器响应

DHCP服务器接收到来自客户机请求IP地址的信息时,在自己的IP地址池中查找是否有合法的IP地址提供给客户机,如果有,DHCP服务器将此IP地址做上标记,加入到DHCP Offer的消息中,然后广播一则DHCP offer消息

③客户机选择IP地址

DHCP客户机从接收到的第一个DHCP offer消息中提取IP地址,发出IP地址的DHCP服务器将该地址保留,这样该地址就不能再分配给其他的DHCP客户机

④服务器确定租约

DHCP服务器接收到DHCP Request消息后,以DHCP ACK 消息的形式向客户机广播成功确认,该消息包含有IP地址的有效租约和其他可配置的信息,当客户机收到DHCP ACK消息时,配置IP地址,完成TCP/IP的初始化

4.DNS域名系统,简单描述其工作原理

默认端口为53

当DNS客户机需要在程序中使用名称时,它会查询DNS服务器来解析该名称。客户机发送的每条查询信息包括三条信息:包括:指定的DNS域名,指定的查询类型,DNS域名的指定类别。基于UDP服务,端口53.该应用一般不直接为用户使用,而是为其他应用服务,如HTTP,SMTP等在其中需要完成主机名到IP地址的转换

DNS端口分为TCP和UDP。DNS协议运行在UDP协议之上

一、TCP是用来做区域传送

二、UDP是用来做DNS解析的

5.TCP和UDP的区别

①相同点:

tcp/udp都在传输层,提供端对端得接口,在七层模型(从上往下)得第四层

②不同点:

TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般

③运行在TCP上的协议

协议端口号协议名称作用
HTTP80超文本传输协议主要用于普通浏览
HTTPS443安全超文本传输协议HTTP协议的安全版本
FTP20/21文件传输协议20用于传输数据,21用于传输控制信息
POP3110邮局协议收邮件用
SSH22远程连接用于加密安全登陆用
TELNET23不安全的文本传送通过一个终端(terminal)登陆到网络

④运行在UDP上的协议

协议端口号协议名称作用
DHCP67服务端/68客户端动态主机配置协议动态配置IP地址

⑤运行在TCP和UDP上的协议

协议端口号协议名称作用
DNS53域名服务用于完成地址查找,邮件转发等工作

6.僵尸进程和孤儿进程

僵尸进程:子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程

孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。孤儿进程是没有父进程的进程

7.RAID—独立冗余磁盘阵列

①为什么要用raid?

硬盘是个很脆弱的东西,它经常会坏掉。所以,为了保证服务器可靠耐用,硬盘必须一直保持可用。所以有了RAID这个东西。它是把多块独立的物理硬盘按不同的方式组合起来形成一个硬盘组(逻辑硬盘),还可以在大磁盘上再分区,放数据还有一个大功能,多块盘放在一起可以有冗余(备份),从而提供比单个硬盘更高的存储性能和提供数据备份技术

②什么情况下用?

RAID 分为不同的等级,各个不同的等级均在数据可靠性及读写性能上做了不同的权衡。在实际应用中,可以依据自己的实际需求选择不同的 RAID 方案

RAID 0:

等量模式,性能最佳,不安全。

需要相同磁盘容量,不然影响性能。

越多块磁盘组成的RAID 0性能越好。

只要有一块磁盘损坏,所有数据都会遗失无法读取。

RAID 1:

即镜像模式,安全性高(数据备份),性能差。

让同一份数据,完整的保存在2块磁盘上。

也需要相同磁盘容量,不同容量将会以小的容量为主。

RAID 5:

均衡模式。

需要3块以上磁盘。

每次写入,都会产生奇偶校验值,每次都记录在不同的盘里。

支持1块磁盘损坏的情况下,保证数据的正常存储。

RAID 6:

跟RAID5不同的是,会产生2种不同算法的奇偶校验值。

需要4块以上,但是允许出错的磁盘变为了2块

Raid1+0(最少4块)

是RAID1和RAID0的结合,先做镜像(1),再做条带(0),兼顾了raid1的容错能力与raid0的条带化读写数据的优点,性能好、可靠性高。属于混合型RAID。

RAID1+0两边的RAID1中可以同时各坏一块硬盘,但不能同时坏掉单边的两个硬盘。

③应用场景

单台服务器:很重要盘不多,系统盘,RAID1
数据库服务器:主库:RAID10 从库 RAID5\\RAID0(为了维护成本,RAID10)
WEB服务器,如果没有太多的数据的话,RAID5,RAID0(单盘)
有多台,监控、应用服务器,RAID0 RAID5
我们会根据数据的存储和访问的需求,去匹配对应的RAID级别

④创建Raid

mdadm –C 创建磁盘

      -n # 使用#块盘创建raid

      -l # raid级别 
      -v # 显示详细信息
      cat /proc/mdstat    #查看RAID磁盘详细信息      #还能查看创建RAID的进度
或者	-D

⑤对比表

RAID级别硬盘数量磁盘利用率是否有校验保护能力写性能
RAID0NN单个硬盘的N倍
RAID1N(偶数)N/2允许一个设备故障需写两对存储设备,互为准备
RAID5N>3(N-1)/N允许一个设备故障需写计算校验
RAID6N>4(N-2)/N允许两个设备故障需双重写计算校验
RAID1+0N>=4(偶数)N/2允许两个基组中各坏一个N/2块盘同时写入

8.TOP

top命令查看对cpu消耗大的进程

①top每排的含义

第1排:top - 16:19:30(当前时间) up 1:31系统运行时间 , 2 users(当前登录用户数), load average: 0.00, 0.01, 0.05(系统负载,即任务队列的平均长度。 三个数值分别为 1 分钟、5 分钟、15 分钟,确定CPU平均负载趋势)。
第2排:系统任务(Tasks)信息:total总进程数,running:正在运行的进程数,sleeping:休眠的进程数,stopped:中止的进程数,zombie:僵死无响应的进程数。
第3排:%Cpu(s)占用信息:us 用户占用,sy 内核占用,ni 优先级调度占用,id 空闲CPU,wa I/O 等待占用,hi 硬件中断占用,si 软件中断占用,st 虚拟化占用。了解空闲的CPU百分比,主要看%id 部分。
第4排:内存占用(KiB Mem)信息:total 总内存空间,free 空闲内存,used 已用内存,buff/cache 物理内存和交换内存的缓冲区总和。
第5排:交换空间(KiB Swap)占用:total 总交换空间,free 空闲交换空间,used 已用交换空间,avail Mem 可用物理空间。
第6排:PID:进程 id;USER:进程所有者的用户名;PR:优先级(由内核动态调整),用户不能;NI:进程优先级(nice 值,负值表示高优先级,正值表示低优先级,用户可以自己调整);VIRT(virtual memory usage):虚拟内存,是进程正在使用的所有内存(ps 中标为 VSZ);RES(resident memory usage):是进程所使用的物理内存,实际实用内存(ps 中标为 RSS);SHR:共享内存大小,单位(kb);S:进程状态;%CPU:上次更新到现在的 CPU 时间占用百分比;%MEM:进程使用的物理内存百分比;TIME+:进程使用的 CPU 时间总计,单位 1/100 秒;COMMAND:命令名/命令行。

②top快捷键

默认3s刷新一次,按s修改刷新时间按空格 :立即刷新
P键:按 CPU排序
M键:按内存排序
T键:按时间排序
p键:进程 IP,查看某个进程状态
N键:根据启动时间进行排序
数字键1:显示每个内核的CPU 使用率u/U:指定显示的用户
h键:可以获得 top 程序的在线帮助信息
q键:可以正常地退出 top 程序

9.为什么ss比netstat快

netstat是遍历/proc下面每个PID目录,ss直接读/proc/net下面的统计信息。所以ss执行的时候消耗资源以及消耗的时间都比netstat少很多

10.如何查看服务器开启了哪些端口

netstat -an | grep ESTABLISHED | wc -l
#a 表示所有
#n表示不查询dns

11.硬链接和软链接的区别

①本质不同
硬链接:同一个文件,多个名称
软链接:不同的文件
②跨分区
硬链接:不支持跨分区
软链接:支持跨分区
③目录
硬链接:不支持对目录创建
软链接:支持对目录创建
④相互关系
硬链接:删除某一个硬链接,另一个硬链接不影响使用
软链接:原始文件和软链接有依赖关系,原始文件删了,软链接就失效了
⑤inode编号
硬链接:inode编号是相同的
软链接:inode编号不同
⑥链接数
硬链接:删除一个硬链接,硬链接的链接数会有变化
软链接:删除一个软链接,链接数不会有变化,删除的相当于是一个文件(或快捷方式)
⑦相对路径:原始文件路径
硬链接:硬链接的相对路径,是相对的当前工作目录的相对路径
软链接:软链接的原始文件路径是,相对的软链接的相对路径,而不是相对当前工作目录
⑧文件类型
硬链接:硬链接的文件类型是,原来是什么就是什么,例如:原来是普通文件,还是普通文件
软链接:软链接的文件类型是L
⑨命令的实现不一样
硬链接:ln
软链接:ln -s

12.开机自检过程

①开机自检:检测出第一个能够引导系统的设备,比如硬盘或者光驱
②MBR引导:运行放在MBR扇区里的启动GRUB引导程序
③GRUB菜单:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置
④加载Linux内核:把内核和镜像文件系统加载到内存中
⑤init进程初始化:加载硬件驱动程序,内核把init进程加载到内存中运行
⑥进入相应的运行级别,运行终端,输入用户名和密码

13.for循环—写一个能够ping地址段的脚本

[root@c7-1 ~]# vim ip.sh

#!/bin/bash

for i in {1…255}
do
ping -c 2 -i 0.1 -W 1 192.168.3.$i &>/dev/null
if [ ? − e q 0 ] t h e n e c h o " 192.168.3. ? -eq 0 ] then echo "192.168.3. ?eq0]thenecho"192.168.3.i 通"
else
echo “192.168.3.$i 不通”
fi

done

14.shell中$的用法

$#:命令行中位置变量的个数
$*:所有位置变量的内容
$?:上一条命令执行后返回的状态,当返回状态值为0时表示正常,非0值表示执行异常或出错
$0:当前执行的进程/程序名

15.禁止用户登录

锁用户:Password -l 或者 usermod -L

解锁:Password -u 或者 usermod -U

禁止用户失效时间和不能录shell

useradd -e 2021-11-31 -s /sbin/nologin zhangsan

锁账号文件:chattr +i 解锁账号文件:chattr -i

16.硬盘监控和处理

df -h|awk -F ‘[ %]+’ '//$/{print $5}'下面用if语句判断是否大于报警值

处理步骤

df –lh 查看磁盘信息,确定那块磁盘满了(可以先处理日志)

cd 目录—》 du -h --max-depth=1 寻找当前目录——》/usr/sbin/lsof|grep deleted 确认删除文件是否被占用–>kill -9 杀掉进程——》df –lh

17./etc/passwd 和 /etc/shadow 的区别

/etc/passwd是用户数据库,其中的域给出了用户名、加密口令和用户的其他信息.

/etc/shadow是在安装了影子(shadow)口令软件的系统上的影子口令文件。影子口令文件将/etc/passwd 文件中的加密口令移动到/etc/shadow中,而后者只对超级用户root可读。这使破译口令更困难,以此增加系统的安全性。

18.目录结构

/bin 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里。

/etc 存放系统管理和配置文件

/home 存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示

/usr 用于存放系统应用程序,比较重要的目录/usr/local 本地系统管理员软件安装目录(安装系统级的应用)。这是最庞大的目录,要用到的应用程序和文件几乎都在这个目录。

/opt 额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里。

/proc 虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息。

/root 超级用户(系统管理员)的主目录(特权阶级o

/sbin 存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等。

/dev 用于存放设备文件。

/mnt 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统。

/boot 存放用于系统引导时使用的各种文件

/lib 存放跟文件系统中的程序运行所需要的共享库及内核模块。共享库又叫动态链接共享库,作用类似windows里的.dll文件,存放了根文件系统程序运行所需的共享文件。

/tmp 用于存放各种临时文件,是公用的临时文件存储点。

/var 日志文件

19.监控cpu

top -b -n 1 | grep Cpu | awk -F ‘,’ ‘{print $4}’ | awk ‘{print $1*10}’

用if语句判断与报警值的大小

处理步骤

第一步,使用top命令查询cpu的使用情况,同时用P按使用cpu排序

第二步,使用lsof -p对应进程号或者-i对应端口号,查看使cpu过高的文件情况

第三步、kill 杀死没有用的进程

或者

查看是否有ddos攻击或者dns欺骗攻击,使用iptables设置ip防护或者Firewalls进行防护

20.权限的特殊字位(rwsrwxrwx )

用户权限出现了s,替代了x(chmod u+s )某个程序任何用户都有读写这个程序的root一样权限

群组权限出现了s,替代了x(chmod g+s)强制将此群组里的目录下文件编入到此群组中

其他权限出现了t,替代了x(chmod o+t)目录只有root和此目录的拥有者可以删除,其他用户全都不可以,这个功能在用途上就是防止其他同组的用户删除自己不想被删除的目录

21.HTTP 1.0 和1.1区别

HTTP1.0:每次传输都要建立三次握手,每一次都要重新建立链接(短连接)
HTTP1.1:建立一次三次握手以后可以一直传输(长连接)

22.web1.0和web2.0的区别

web:全球广域网,也称万维网,一种分布式图形信息系统,建立在Internet上的一种网络服务
web1.0:以编辑为特征

23.ARP和DNS的区别

  • 都是将一个给定的输入实体转换为另一个实体,DNS将域名转换为IP,而ARP则是将IP转换为物理地址
  • 两者的输入对象不一致,并且两者在网络层次结构所在的位置不同,DNS工作在应用层,ARP工作在网络层

以上是关于Linux——最全面试题整理(仅此一篇)的主要内容,如果未能解决你的问题,请参考以下文章

腾讯程序员熬夜码字:网络 IO 演变发展过程和模型介绍,仅此一篇

看这篇就够了!腾讯程序员:Kafka背后优秀设计总结,仅此一篇

阿里大神万字总结:InnoDB锁类型及其详细分析(仅此一篇,干货建议收藏!!)

主流的四种限流策略,我都可以通过redis实现,干货仅此一篇

ahjesus-全网仅此一份 kali linux 中文教程 learn kali 汉化版

ahjesus-全网仅此一份 kali linux 中文教程 learn kali 汉化版