Linux面试题分享⑦

一、系统阶段

1. 查看当前用户的 uid

bash 复制代码
id

2. systemd 与 init 的区别

  • (1)并行处理所有服务,加速开机流程:在init启动流程中,服务是一项一项启动的。在systemd可以所有服务同时启动。(2)命令相对简单:和之前的SystemV相比,所有操作都是systemct1命令来控制。而之前的systemV中有init、service、chkconfig等 (3)服务依赖性检测:如果B服务是架构在A服务上启动的,当没有启动A服务时就先动B服务的话,systemd会自动启动A服务

3. 查看当前的 Swap 分区大小

bash 复制代码
free -m

4. 查看系统平均负载的命令

bash 复制代码
uptime
top
w

5. sudo 和 su 及 su --

  • sudo 命令可以让普通用户以超级用户的权限执行特定命令。在使用 sudo 命令时需要输入当前用户的密码进行身份验证。
  • su -(完全切换),但该命令会同时启动一个新的 shell 会话,并将环境变量设置为目标用户的环境变量。

6. 普通用户为什么能执行 passwd

它有 suid 权限。

7. 为什么对文件有写权限,却不能删除文件

没有上级目录权限。

8. 查看系统内存,IO 分别用什么命令

bash 复制代码
free
iostat

9. OSI 七层模型及作用

  • 物理层:数据实际传输,电气特性定义(哪些供电,哪些传输数据)
  • 数据链路层:MAC 地址编址

10. 创建用户的命令及常用选项,用户家目录模板

bash 复制代码
useradd -m -s /bin/bash -G groupname username

用户家目录模板 /etc/skel 权限 755。

11. Linux 系统中,点开头,点 swp 结尾的文件是什么

临时交换文件,隐藏文件。

12. 在 shell 脚本中有哪几种注入变量的方式

  • 用户自定义
  • read 获取
  • 位置参数变量($@$*$#$n
  • 预定义变量($?$!$$

13. 在启动流程中,有一个步骤为从虚拟根切换为真实根,那么先挂载虚拟根目录的目的是什么?

这个根目录是为了调用 USB、SATA、SCSI 硬盘和 LVM、RAID 文件系统的驱动,在加载驱动后才可以加载真正的系统根目录。

14. 系统日志管理的几种方案,分别用什么机制实现

  • syslog :传统的日志管理方式,通过 rsyslogsyslog-ng 实现。
  • journaldsystemd 内置的日志管理工具,提供更强大的日志管理功能。

15. Linux 系统中对于权限的分类分别有哪些

  • 常见权限:rwx
  • 隐藏属性 :iae
    • i:如果对文件设置 i 属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置 i 属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。
    • a:如果对文件设置 a 属性,那么只能在文件中增加数据,但是不能删除也不能修改数据;如果对目录设置 a 属性,那么只允许在目录中建立和修改文件(echo 追加覆盖),但是不允许删除。
    • e:Linux 中绝大多数的文件都默认拥有 e 属性。表示该文件是使用 ext 文件系统进行存储的,而且不能使用 chattr -e 命令取消 e 属性。
  • Suid:只有可以执行的二进制程序才能设定 SUID 权限,命令执行者要对该程序拥有 x(执行)权,命令执行者在执行该程序时获得该程序文件属主的身份,SUID 权限只在该程序执行过程中有效。
  • Sgid:用户将获得该文件所属组的权限。
  • Sbit:只能用于设置在目录上,设置了这种权限的目录,只有该文件的创建者、目录的拥有者和 root 可以删除自己的文件。
  • ACL 权限:ACL(access control list)访问控制列表,可以对单一的用户或者组设置对文件或目录的独立 rwx 权限。

16. CentOS7 启动流程

  1. 系统从BIOS或UEFI中加载硬件信息并进行检测。
  2. 根据BIOS的设置,系统从指定的启动设备中读取MBR(主引导记录)。
  3. MBR加载Boot Loader(如Grub2),它进一步引导内核。
  4. 内核加载后,会将initramfs文件系统装载到RAM中,形成一个临时的根文件系统。
  5. 在这个阶段,内核完成一些必要的初始化工作,包括加载硬件驱动。
  6. 随后,initramfs文件系统的根目录会被切换成真实磁盘上的根文件系统根目录。
  7. 最后,内核启动的第一个进程systemd接管启动流程,同时并发地启动其他服务和应用程序。

17. 系统运行慢应从哪些方面进行排查

  • 检查磁盘 IO 情况
  • 检查网络延迟
  • 检查系统资源占用情况
  • 检查系统日志
  • 检查应用程序本身

18. 系统启动中 grub v1 v2 版本区别及其作用

  • GRUB1 :配置文件为 /boot/grub/menu.lst,主要用于早期的 Linux 发行版。
  • GRUB2 :配置文件为 /boot/grub2/grub.cfg,功能更强大,支持更多功能,如图形界面、多内核选择等。

19. top 命令查看系统负载很低,实际访问却很卡如何排查

  • 检查磁盘 IO 情况
  • 检查网络延迟
  • 检查系统资源占用情况
  • 检查系统日志
  • 检查应用程序本身

20. 介绍一下 LVM 和 Raid 的相关

  • LVM:逻辑卷管理,可以动态调整磁盘空间,支持快照等功能。
  • RAID :磁盘阵列,通过多个磁盘组合提高性能和数据冗余。
    • RAID 0:条带化,提高读写速度,无冗余。
    • RAID 1:镜像,数据冗余,提高数据安全性。
    • RAID 5:条带化加奇偶校验,提高读写速度和数据安全性。
    • RAID 6:双奇偶校验,提高数据安全性。
    • RAID 10:结合 RAID 1 和 RAID 0,提高性能和数据安全性。

硬链接:多个文件,名称、保存路径都不相同,但是inode相同。

1.文件创建硬链接后,链接数量+1。每删除一个文件,文件链接数量-1。

2.互为硬链接的文件之间,修改任意一个其余均会发生变化。

3.硬链接无法跨分区创建。

4.目录无法创建硬链接。

软链接(符号链接):

1.软链接和原文件之间inode号不同。

2.软链文件类型为l,软链接默认权限最大。

3.修改软链接,源文件会发生变化。修改源文件,软链接也会发生变化。

4.删除软链接,源文件不受影响。删除源文件,软链接失效。

5.软链接可以跨分区创建。

6.创建软链接,建议写绝对路径。

7.目录可以创建软链接。

源码包

定义 软件的源代码是软件的原始数据,要通过编译将源代码转换为计算机可以识别的机器语言。

优点

  • 开放源代码,可以自行修改源代码。
  • 可以自由选择安装所需功能。
  • 软件是编译安装,更加稳定高效。
  • 卸载方便,直接删除安装目录即可。

缺点

  • 安装过程中过程较为复杂。
  • 编译过程时间较长(与 RPM 包相比)。
RPM 安装

定义

RPM 提供了一种可升级、具有强大查询功能和支持安全验证的通用型 Linux 软件包管理工具。由于这种软件管理方式非常方便,所以逐渐被其他 Linux 发行版所借用。

优点

​ 安装简单方便。

  • 安装时不用指定安装位置。
  • 方便升级、卸载。

缺点

  • 大多数 RPM 安装需要解决依赖关系。

    YUM

    可以从多个源当中搜索软件及软件安装所需的依赖包,并自动安装相应的依赖软件。

    计算机五大组成部分 :由冯诺依曼在1945年提出,包括运算器、控制器、存储器、输入设备、输出设备。
    磁盘分区:划分扇区的范围。

    • 扇区:圆心以放射状分割出磁盘的最小存储单位。
    • 磁道:由扇区组成的圆。
    • 柱面:若有多个盘片,所有盘片都在同一磁道相互堆叠在一起就是一个柱面。

GPT 与 MBR 区别

  • 传统 MBR 分区方式有诸多限制,如只能有4个主分区,无法创建大于2TB的分区。
  • GPT 分区方式则没有这些限制,还提供了分区表的冗余以实现分区表的备份与安全。

XFS 优势

  • 单个文件系统量最大支持8EB,单个文件支持16TB,CentOS 7起默认文件系统变为XFS。
  • XFS 文件系统在数据分布上主要划分为数据区、文件系统活动登录区、实时运行区。

LVM 快照

  • 在做快照时有两个分区,一个是快照区,另一个是被快照区。
  • 快照分区默认不存数据,被快照分区文件发生改变才把旧文件移到快照分区中。

磁盘配额

  • 用来限制用户创建inode和block。
  • 包括软限制、硬限制、宽限天数等概念。
  • 软限制(soft):用户在超过软限制之后,每次用户登录系统时系统会发出警告信息,并且给予一定的宽限天数 centos7 中因为有实时运行区导致没有软限制提示
  • 硬限制(hard):表示用户的用量绝对不会超过这个限制值,如果超过硬限制则会锁住该用户对磁盘的使用权。
  • 宽限天数:宽限时间只有在用户的磁盘用量介于软限制和硬限制之间时会出现。宽限天数默认为7天

备份策略

  • 完全备份:每次备份都复制所有数据。

  • 增量备份:仅备份上次备份后改动的数据。

  • 差异备份:与首次备份比较并备份差异数据。

    中断处理

    • 定义:中断是优先级最高的信号,中断信号到达CPU时,CPU需要从当前进程切换到新进程,这一过程称为中断处理。
    • 类型:硬中断和软中断。

    上下文切换

    • 定义:执行的进程被加载到寄存器的代码被称为上下文,随着进程的切换会切换代码即为上下文切换。
    • 影响:频繁的上下文切换会导致CPU性能下降。

父进程与子进程

  • 复制地址空间:父进程复制自己的地址空间,创建一个新的进程即子进程。
  • PID与PPID:进程ID(PID)和父进程ID(PPID)。

僵尸进程

  • 定义:子进程代码执行结束,但父进程未处理退出信号,导致子进程变为僵尸进程。
  • 处理 :使用kill命令无法杀死僵尸进程,可以通过杀死僵尸进程的父进程使僵尸进程消失。

线程

  • 定义:进程中产生的一个执行单元,用于进程间共享内存地址空间。

Shell脚本执行方式

  • 执行脚本方式:
    1.以绝对路径或相对路径方式执行,需要执行权限。
    2.以source或.的方式执行,不需要执行权限。
    3.以bash的方式执行,不需要执行权限。

命令执行顺序

  1. 绝对或相对路径执行的命令。
  2. 别名。
  3. Bash内部命令。
  4. 按照$PATH环境变量定义的目录查找顺序找到的第一个命令。

二、数据库阶段

  1. ssh秘钥验证过程

首先,客户端事先生成一对密钥,并互换公钥文件。接下来,客户端不用密码,而是用密钥对来验证身份。客户端用服务器的公钥来加密自己的公钥,然后把加密后的信息发送给服务器。服务器用自己的私钥解密这些信息,得到客户端的公钥,并检查是否与服务器存储的客户端公钥匹配。如果匹配,服务器会进一步确认这个公钥是客户端创建的,于是发送一个加密的质询信息给客户端,让客户端用它的私钥来解密。如果客户端能正确解密并用服务器的公钥重新加密后发回,服务器就能确认这个公钥属于客户端,从而验证了客户端的身份

3./etc/ssh/ssh_config和sshd_config的区别

/etc/ssh/ssh_config:配置SSH客户端的行为,可以用来配置主机别名。

/etc/ssh/sshd_config:配置SSH服务器。可以设置服务器监听的端口和IP地址,可以控制用户登录。

4.TCP Wrappers的工作原理、如何发挥作用

TCP Wrappers 首先检查 /etc/hosts.allow 白名单文件,如果找到匹配的允许规则,则连接请求被允许;如果未找到匹配规则,则继续检查 /etc/hosts.deny黑名单文件,如果找到匹配的拒绝规则,则连接请求被拒绝;如果在两个文件中都未找到匹配规则,连接请求将被默认拒绝。因为白名单优先级比黑名单高,TCP Wrappers可以通过这个发挥作用

5.DHCP的原理、租约流程、续租流程、端口及作用、软件名和服务名、单臂路由实验的原理及作用、中继实验的原理及作用、路由转发功能如何实现

原理:DHCP是一个工作在应用层的局域网网络协议,使用UDP不可靠传输协议工作

租约流程:首先客户端通过广播DHCP Discover数据包来寻找可用的DHCP服务器;服务器接收到请求后,从其可用的IP地址池中选择一个地址,并通过DHCP Offer数据包将此地址及相关配置信息发送给客户端;客户端收到并决定接受后,会发送DHCP Request确认;最后,DHCP服务器通过发送DHCP ACK数据包正式确认分配,客户端据此设置其IP,网关等网络参数并开始通信。

续租流程 当客户端使用租约达到50%,以单播形式向服务器请求续约

如果续约失败,则继续使用IP,达到租约87.5%,以广播形式形式向服务器续租

如果续约继续失败,客户端则使用租约至100%,重新发送DHCP Discover包,重新广播寻找新的DHCP服务器

端口 67

作用 dhcp主要在工作中主要用于批量装机

软件名 dhcp

服务名 dhcpd

单臂路由原理主要是基于DHCP服务器在单个物理网络上为客户端提供多个作用域租约地址

单臂路由使用作用:我们如果想要让两个广播域之间通信就可以用到单臂路由

中继实验的原理及作用:作用: DHCP服务器利用了DHCP中继器来实现不同广播域分配不同IP地址,它的主要作用是在不同的广播域中代理DHCP服务器,原理:当中继器收到请求后,会检查该请求是通过哪个网关进入的,并根据该网关所属的网络段来确定应从哪个地址池分配IP地址。

路由转发是实现不同网段之间通信

6.DNS解析的过程、软件名和服务名、端口及作用、四个配置文件的位置、记录类型、各个实验的含义

过程:首先客户端查看查找本地hosts文件,本地缓存,如果有则不需要在找DNS服务器域名解析,没有就将请求转发给DNS服务器,DNS服务器首先在缓存中查找,没有就向根域服务器发起请求,根域服务器无法解析返回一级域名,让DNS服务器像一级域名服务器发起请求,一级域名服务器无法解析返回二级域名,让DNS服务器像二级域名服务器发起请求,二级域名服务器解析出IP后,返回给客户端,让客户端成功访问到想要访问的服务器

软件名:bind

服务名 named

端口UDP 53给客户端作为解析请求的目标端口 TCP 53 DNS主从同步的数据传输端口

DNS用于IP和域名的相互转化

/etc/named.conf #主配置文件

/etc/named.rfc1912.zones #区域配置文件(声明要解析的对象)

/var/named/named.localhost #正向解析文件

/var/named/named.loopback #反向解析文件

记录类型 A 正向解析记录 CNAME 将域名指向另一个域名 NS:名称服务器 PTR 反向解析记录 AAAA 指定域名的IPv6地址的记录 MX 邮件交换记录

主从DNS服务器 数据备份(从服务器向主服务器发起请求,然后主服务器将相关数据发送给从服务器),分摊压力

DNS缓存服务器保存部分常用的数据副本,以加快访问速度,提高工作效率

分离解析DNS服务器在解析给不同客户端时,会根据客户端来源地址的不同解析给响应的服务 这就叫分离解析,或者叫智能DNS 智能DNS采用"就近原则"

7.VSFTP的连接类型、工作模式及特点、端口及作用、软件名和服务名、登录后可以使用的命令、三种登录方式、配置文件里控制权限的参数

连接类型命令连接 TCP 21**:用于发送FTP命令。

数据连接 TCP 20:Port模式下用于数据传输。

TCP 随机端口**:Passive模式下用于数据传输

工作模式 主动模式 客户端与服务器的TCP 21端口建立连接,客户端通过PORT命令指定数据接收端口,服务器通过TCP 20端口连接客户端指定端口发送数据。特点 主动模式需考虑客户端防火墙配置。

被动模式客户端与服务器的TCP 21端口建立连接,客户端发送Pasv命令,服务器打开一个(>1023)临时端口 并通知客户端连接此端口传输数据。特点:被动模式客户端无需关注防火墙设置,使用方便。服务器端需要管理员配置端口放行策略。

服务端软件名 vsftpd

服务名 vsftpd

客户端软件名 ftp

命令: 用?打开命令提示

​ delete 删除

​ rename 重命名

​ ls 列出文件

​ pwd 当前所在的绝对路径

​ mkdir 创建文件

​ get 拉取文件

​ put 推送文件

​ lcd 切换目录

匿名用户验证 开放性资源共享 默认权限受到严格限制。

anonymous_enable=YES #启用匿名访问

​ anon_umask=022 #匿名用户所上传文件的权限掩码

​ anon_root=/var/ftp #匿名用户的FTP根目录

​ anon_upload_enable=YES #允许上传文件

​ anon_mkdir_write_enable=YES #允许创建目录

​ anon_other_write_enable=YES #开放其他写入权(删除、覆盖、重命名)

​ anon_max_rate=0 #限制最大传输速率(0为不限速,单位:bytes/秒)

本地用户验证 非开放性资源的共享

虚拟用户验证 非开放性资源的共享 虚拟用户创建后会保存到数据库,用户登录后与Linux用户进行映射,即虚拟用户借用映射用户来上传下载文件等功能 安全性和管理性高

local_enable=YES #是否启用本地系统用户

​ local_umask=022 #本地用户所上传文件的权限掩码

​ chroot_local_user=YES #是否将用户的家目录当做根目录

​ allow_writeable_chroot=YES#忽略安全性警告{centos7中需要添加此选项}

​ local_max_rate=0 #限制最大传输速率

ftpd_banner=Welcome to blah FTP service #用户登录时显示的欢迎信息

​ userlist_enable=YES

​ userlist_deny=YES

​ #禁止/etc/vsftpd/user_list文件中出现的用户名登录FTP

​ userlist_enable=YES

​ userlist_deny=NO

​ #仅允许/etc/vsftpd/user_list文件中出现的用户名登录FTP

pasv_enable=YES 被动模式

  • 如何提高数据库数据的安全性?

    • 提高数据库数据安全性的方法包括客户端连接时的身份验证和授权、网络连接状态管理、防火墙策略、最小权限授权、合理设计数据库和表结构以防止不合理数据存储以及通过备份、日志记录、主从同步等方式实现数据的本地或异地备份。
    • 数据库的持久化是什么意思,以及为什么要进行持久化?
      • 持久化是指将内存空间中的数据保存到永久存储介质的过程。因为他可以保证数据的一致性和完整性,防止由于硬件故障导致的数据丢失。

    事务特征

    • 原子性:一个事务内的操作统一成功或失败 有回滚机制,能够触发还原
    • 一致性:事务前后的数据总量不变
    • 隔离性:事务与事务之间并发访问时互不影响。
    • 持久性:事务一旦提交发生的改变不可逆,事务结果持久化。

    优化数据库的例子 索引

    1)另外搞个机器,也搭建好一样的数据库服务器

    2)创建表,建立索引(此时是空表)

    3)把旧的数据库的数据,导入到新的数据库中,(非常耗时)慢慢导,

    4)数据导好了,把应用程序的请求切换到新的服务器上

    此时,就可以顺利完成切换,确保数据库不会挂前提啥,把索引给加上了

    关系和非关系数据库

    • 关系型数据库 :大体上可以认为是通过"表格"(Excel) 这样的方式来组织的,每一行都是一条数据.每一行中都包含很多列,每个列还会有不同的类型, 小中型数据库 #MySQL MariaDB 大型 Oracle SQL Server
    • 非关系型数据库 #redis mongoDB 对于数据的格式上的要求不严格.往往是按照键值对的形式来进行组织的

1. 唯一索引

所有列的值必须唯一,但是允许有空值。普通索引和唯一索引可以称为辅助索引。

相关推荐
ChinaRainbowSea37 分钟前
1. Linux下 MySQL 的详细安装与使用
linux·数据库·sql·mysql·adb
网络安全(华哥)1 小时前
网络安全服务实施流程管理 网络安全服务体系
运维·服务器·网络
致奋斗的我们1 小时前
Nginx反向代理及负载均衡
linux·运维·mysql·nginx·负载均衡·shell·openeluer
百锦再1 小时前
在Linux上创建一个Docker容器并在其中执行Python脚本
linux·python·docker
Ares-Wang1 小时前
负载均衡 方式
运维·负载均衡
钗头风1 小时前
3.Docker常用命令
运维·docker·容器
忧虑的乌龟蛋2 小时前
嵌入式 Linux:使用设备树驱动GPIO全流程
linux·服务器·嵌入式·imx6ull·gpio·点灯·pinctrl
朝九晚五ฺ2 小时前
【Linux探索学习】第三十弹——线程互斥与同步(上):深入理解线程保证安全的机制
linux·运维·学习
小林熬夜学编程2 小时前
【MySQL】第八弹---全面解析数据库表的增删改查操作:从创建到检索、排序与分页
linux·开发语言·数据库·mysql·算法
六六六六六66662 小时前
企业组网IP规划与先关协议分析
服务器·网络·tcp/ip