Linux 面试题2

1. 基础正则表达式(BRE)与扩展正则表达式(ERE)在元字符支持上有何本质区别?请举例说明在 grep 和 sed 命令中,若使用 ERE 应如何加选项或进行转义?
2. 简述 sed 命令的模式空间(Pattern Space)和保持空间(Hold Space)的概念,它是如何实现流编辑的?并简述 awk 的工作循环(即 BEGIN、主输入循环、END 的执行顺序和优先级),并列出其至少 5 个常用内置变量的含义。
3. 对比 MBR 分区方案与 GPT 分区方案,并解答:在生产环境中面对 4TB 大容量磁盘,应该选择哪种分区方案?为什么?简述 Ext4 文件系统与 XFS 文件系统的差异,它们在进行逻辑卷缩减时有什么重大区别?
4. 物理卷(PV)、卷组(VG)、逻辑卷(LV)和物理盘区(PE)这四个概念是如何层层关联的?相比传统物理分区,LVM 的核心优势是什么?说明 RAID-0, RAID-1, RAID-5, RAID-10 的区别,并从“容错性、磁盘利用率、读写性能、最少盘数”这几个维度进行横向对比。
5. 现有一个网页服务器访问日志文件,请编写一个 sed 语句:将文件中被注释的行(以 # 开头)和空行全部过滤掉,直接在终端打印剩下的内容。并写出安全的 sed 命令(要求原地修改并生成备份 .bak 文件),将配置文件 /etc/ssh/sshd_config 中的 #Port 22 替换为 Port 2222。
6. 假设 Nginx 的日志文件 /var/log/nginx/access.log 中,第一列为客户端的 IP 地址,第九列为 HTTP 状态码。请写出 awk 一行命令:
1. 统计并输出每个 IP 的请求总次数,按降序排列,取前 10 名。
2. 统计并输出每个 HTTP 状态码(如 200, 404, 500 等)出现的次数。
7. 生产环境中新加入了一块物理硬盘 /dev/sdb,要求对其使用 GPT 方案,并划分一个容量为 100GB 的主分区 /dev/sdb1。请分别给出使用:
1. parted 命令行的一体化分区命令。
2. cat << EOF 配合 fdisk / gdisk 的非交互式分区方案。
并写出将新建的 /dev/sdb1 格式化为 xfs 文件系统,并指定卷标(Label)为 DATA_PART 的命令。
8. 写出将 /dev/sdb1 挂载到 /data 目录下的命令。获取 /dev/sdb1 的 UUID,并写出在 /etc/fstab 中新增一行以实现“系统开机时自动将其以 defaults 选项挂载到 /data” 的配置字段。
9. 现系统内存不足,需要紧急扩容交换空间。请写出以下操作命令:
1. 在单盘上新建一个物理分区 /dev/sdc1,大小为 4GB。
2. 将该分区格式化为交换分区类型并启用它。
3. 通过配置文件 /etc/fstab 实现开机自动启用,并设置其优先级为 10。
10. 现有一个卷组 vg_data,其中已包含物理卷 /dev/sdb1。在该卷组中有一个名为 lv_store 的逻辑卷,采用 xfs 文件系统,挂载在 /store。由于空间爆满,需要从物理盘 /dev/sdc2 处对其进行扩容。请写出:
1. 将 /dev/sdc2 初始化为 PV 并扩展到卷组 vg_data。
2. 扩展逻辑卷 lv_store,将卷组剩余所有空间全部加给它。
3. 在线扩容其 xfs 文件系统。
11. 写出为 /dev/vg_data/lv_store 创建一个只读快照 lv_store_snap` 的命令,快照预留大小为 500MB。在逻辑卷上进行测试后发现数据损毁,请写出卸载原逻辑卷、恢复快照并重新挂载验证的完整命令。
12. 在对新磁盘配置持久挂载时,某管理员将 /etc/fstab 中的 UUID 输错了一个字符,重启后系统直接卡在了 Emergency Mode。此时根分区变为了只读。请回答:
1. 在此终端下如果直接编辑 /etc/fstab 会遇到什么报错?(提示:只读文件系统)
2. 请给出能够解除只读限制、恢复系统挂载并修复该配置文件的完整命令步骤。
3. 在修改 /etc/fstab 之后重启前,应运行哪条命令验证配置正确性?
13. 开发部门在清理旧分区时,要求运维将一个容量为 500GB 的 LVM 逻辑卷缩减到 200GB。该卷上挂载的是 xfs 文件系统。请回答:
1. 这个任务在 xfs 文件系统上可行吗?如果执行 lvreduce 会发生什么灾难?
2. 如果文件系统是 ext4,缩减逻辑卷的正确安全步骤是怎样的?为什么缩容必须“先缩减文件系统,再缩减逻辑卷”?

第一题

基础正则表达式和扩展正则表达式区别:基础正则表达式中多数特殊字符会被当成普通字符,如需要让其附有特殊意义需要转义“\”,例如 () 、{}、| 等

例:

grep -v '#\|^$' /etc/fstab grep -Ev '#|^$' /etc/fstab 或 egrep -v '#|^$' /etc/fstab sed -n '/^#\|^$/!p' x.log sed -rn '/^#|^$/!p' x.log

第二题

模式空间:模式空间是sed命令的默认工作空间(起到临时缓存作用,工作流完成就释放),逐行读取,逐行处理,one by one 的工作原理

保持空间:和模式空间类似,保持空间主要作用临时存储,模式空间工作流完成就会清空空间的内容,多行拼接场景,需要借助保持空间。大概率用不到。

awk 和sed类似,多了一个维度,如果sed是一维命令(x),那awk 就是一个二维命令(x,y),工作原理也是逐行读取,每一行为一个记录(x),每一列为一个字段(y),处理顺序先初始化BEGIN的动作,然后是主体动作,最后是END中的动作。常见变量:

$0 代表全部字段

$1 代表第一个字段

NR 目前已读取的输入记录总数。

NF 当前输入记录中的字段数量。

RS 输入记录分隔符,默认值为换行符

ORS 输出记录分隔符,默认值为换行符

FS 输入字段分隔符,默认为空格

OFS 输出字段分隔符,默认值为空格。

第三题

mbr 采用32位寻址,mbr最大支持2T,最多4个主分区。

gpt 采用64为寻址,gpt则无容量限制,128个主分区。

ext4 小文件友好,最大文件系统 1EB,单文件上限 16TB,支持扩容,缩容

xfs 大文件友好,最大文件系统 8EB,单文件 8EB,只支持扩容

lvm 场景ext4可扩可缩,xfs仅支持扩

第四题

物理卷(PV)是卷组的物理载体,卷组是逻辑卷的资源池、逻辑卷(LV)可用的存储空间、物理盘区(PE)逻辑卷的最小存储单元,条带后的真实数据载体;以上的关系可以参考集中式存储的硬盘域,存储池,lun等关系消化理解。

第五题

sed -rn '/^#|^$/!p' x.log
sed -i.bak 's/#Port 22/Port 2222/' /etc/ssh/sshd_config

第六题

awk '{print $1}' | sort | uniq -c | sort -nr | head
awk '/200|404|500/{print $9}' | sort | uniq -c | sort -nr

第七题

parted -s /dev/sda unit GB mkpart primary xfs 0GB 100GB cat <<END fdisk /dev/sda n p 1 \r +100G w

第八题

mount /dev/sdb1 /data blkid /dev/sdb1 | cut -d ' ' -f2 | sed -nr 's/UUID="(.*)"/UUID=\1 /data xfs default 0 0/p' >> /etc/fstab

第九题

parted -s /dev/sdc mkpart primary 0GB 4GB && mkswap /dev/sdc1 && swapon /dev/sdc1 > /dev/null

第十题

pvcreate /dev/sdc2 vgextend vg_data /dev/sdc2 lvextend -l +100%FREE /dev/vg_data/lv_store xfs_growfs /store df -h

第十一题

lvcreate -s -r -L 500M -n lv_store_snap /dev/vg_data/lv_store

第十二题

mount -o remount,rw / vim /etc/fstab mount -a reboot

第十三题

1. xfs文件系统格式不支持在线缩容,想要缩容备份好数据,重新来一遍。

先卸载挂载点 umoutn xx 缩容前文件系统检测 e2fsck -f 目标逻辑卷 没有报错开始缩容 先缩文件系统 resize2fs 目标逻辑卷 目标容量 再缩空间 lvreduce -L 目标容量 目标逻辑卷 最后重新挂载 mount xx xx