文件系统、权限与文本处理

共 73 题
#

1. /etc/fstab 写错导致系统无法启动的恢复路径,救援模式下如何只读修复

A 只要 fstab 有错,系统就一定起不来
B 修改 fstab 后无需验证即可重启
C fstab 推荐使用设备名 /dev/sdX 以防止挂载失败
D 应通过救援模式进入,只读转 rw 后用 blkid 核实 UUID 并 mount -a 验证 ✓ 正确答案
#

2. /proc/sys/fs/file-max 与 /proc/sys/fs/nr_open 在 fd 限制的层级关系

A file-max 约束系统总 fd,nr_open 是单进程 fd 的绝对硬上限,提升需两级同时满足 ✓ 正确答案
B file-max 是单进程上限,nr_open 是系统总量
C nr_open 永远小于 file-max 才有意义
D 修改 ulimit 即可突破 nr_open
#

3. /proc、/sys、/dev 三个虚拟文件系统分别承担什么职责

A /proc 用于存放设备节点
B /proc 侧重进程与内核状态,/sys 侧重设备与驱动模型,/dev 是设备节点文件 ✓ 正确答案
C /sys 存放进程运行时信息
D /dev 用于调整内核参数
#

4. LVM snapshot 与文件系统 snapshot 在备份场景的差异

A 两者机制完全相同
B LVM 快照不占空间
C LVM 是块层 COW 快照需预留空间,文件系统快照更省空间且一致性更好,需按场景选择 ✓ 正确答案
D 文件系统快照无法保证一致性
#

5. Linux ACL 与 POSIX 权限的兼容性与冲突处理

A ACL 是 POSIX 权限的超集,mask 限制命名用户/组的最大有效权限,chmod 会更新 mask ✓ 正确答案
B ACL 与 POSIX 权限互不兼容
C chmod 不会影响 ACL
D mask 不影响任何 ACL 条目
#

6. Linux 中 df -i 与 df -h 输出不一致时如何判断根因

A 二者必然一致
B df -i 满而 df -h 未满说明 inode 耗尽,多因海量小文件,需清理小文件或重建加大 inode ✓ 正确答案
C df -i 满一定是空间不足
D inode 耗尽无法处理
#

7. Linux 中 inode 耗尽、文件描述符耗尽、磁盘配额满三类故障如何快速区分

A 按报错关键字结合 df -h/df -i/ulimit/quota 区分:inode 耗尽、fd 耗尽、配额满各有不同 ✓ 正确答案
B 三者报错完全相同
C inode 耗尽报 Too many open files
D 磁盘配额满时 df -h 必为 100%
#

8. Linux 文件权限 rwx 三组分别控制什么,目录的 x 位为何与读文件不同

A 目录 x 位表示执行文件
B 目录 x 位表示"可进入/搜索",删除文件需目录 w+x 而非文件自身写权限 ✓ 正确答案
C 目录只有 r 即可完全访问
D 文件 x 位与目录 x 位意义相同
#

9. chmod 777 在生产环境为何是高危操作,何时只能用于临时调试

A 777 权限非常安全
B 777 使任意用户可写可执行,易被篡改/提权,生产应避免,仅临时调试并尽快收紧 ✓ 正确答案
C 777 只影响 owner
D 生产环境应广泛使用 777 避免权限问题
#

10. chown、chgrp、umask 三者如何配合确保新建文件的默认权限安全

A 三者互不影响
B 用 777 即可替代 umask
C chown/chgrp 定归属配属组授权,umask 定默认权限门槛,配合 setgid 目录实现安全共享 ✓ 正确答案
D umask 只影响 root 用户
#

11. fdisk、gdisk、parted 在 MBR 与 GPT 上的差异

A MBR 支持 2TB 以上磁盘
B fdisk 只能操作 GPT
C GPT 支持 >2TB 与多分区,自动化用 parted,交互精细操作用 fdisk/gdisk ✓ 正确答案
D gdisk 只能操作 MBR
#

12. find 与 xargs、find -exec 的区别,删除百万级文件时如何避免参数过长

A rm *.log 一定能处理百万级文件
B 百万级文件用 find -print0 | xargs -0 分批或 find -delete 内建删除,避免参数过长与特殊字符 ✓ 正确答案
C -exec \; 是最高效方式
D xargs 无法分批处理
#

13. grep、egrep、fgrep、固定字符串与 PCRE 在性能与可维护性上的取舍

A 字面量匹配用 -F 最快最准,结构匹配用 -E,复杂匹配才用 -P 并注意性能 ✓ 正确答案
B fgrep 会解释正则
C -P 最省性能
D grep 默认使用扩展正则
#

14. mount 的 noexec、nosuid、nodev 三类安全挂载选项分别在哪些场景启用

A noexec 允许执行目录内程序
B noexec 防执行、nosuid 防提权、nodev 防伪设备,常用于 /tmp、/dev/shm 等用户可写目录 ✓ 正确答案
C nosuid 用于禁止网络
D nodev 禁止挂载任何文件系统
#

15. sed 与 awk 在字段切分、流式处理与状态机场景下的选型差异

A awk 擅长行级替换
B sed 适合行级编辑替换,awk 适合字段切分与状态机/统计 ✓ 正确答案
C sed 无法做任何编辑
D awk 不能处理字段
#

16. setuid、setgid、sticky bit 三类特殊位分别在哪些场景使用

A sticky bit 用于提权
B setgid 只影响可执行文件
C setuid 提权、setgid 目录继承属组供共享、sticky bit 保护公共目录内文件防删除 ✓ 正确答案
D sticky bit 与目录无关
#

17. umask 计算默认权限时为何对目录与文件行为不同

A 文件与目录默认基准都是 777
B umask 只影响文件不影响目录
C 文件默认含执行位
D 文件默认 666、目录默认 777,故同 umask 下文件不含 x 位而目录含 x 位 ✓ 正确答案
#

18. 大文件日志按时间切割的 rotate 策略,logrotate 的 copytruncate 与 create 模式选哪种

A copytruncate 不会丢数据
B 应用支持 reopen 时用 create 更可靠,无法 reopen 时才用 copytruncate 并接受少量数据丢失 ✓ 正确答案
C create 模式无需应用配合
D 大文件日志应禁用 rotate
#

19. ACL mask 在 ACL 中的最大有效权限语义与误用陷阱

A mask 会增加权限
B mask 限制 owner 权限
C mask 是命名用户/组/group 位的最大有效权限上限,chmod 会重算 mask 导致权限收窄 ✓ 正确答案
D mask 与 group 位无关
#

20. GNU find 的 -print0 与 xargs -0 的工程意义,避免文件名包含特殊字符崩溃

A 两者都按换行分隔
B 特殊字符文件名无需特殊处理
C -0 会让文件名被拆分
D -print0 用 NUL 分隔、-0 按 NUL 解析,可安全处理含空格/换行/引号的文件名 ✓ 正确答案
#

21. Linux 中 ext4 多块分配与延迟分配的影响

A 多块/延迟分配提升性能减少碎片,但延迟落盘带来掉电丢数据风险,需 fsync 保证持久性 ✓ 正确答案
B 延迟分配立即落盘
C 延迟分配没有一致性影响
D 多块分配只影响小文件
#

22. Linux 文件的 ctime、mtime、atime 分别代表什么及典型修改场景

A ctime 是文件创建时间
B 读文件会更新 mtime
C chmod 只更新 mtime
D mtime 是内容修改时间,ctime 是状态变更时间且不可手动设置,atime 是访问时间 ✓ 正确答案
#

23. Linux 文件系统 journaling 模式 data=ordered/writeback/journal 的崩溃一致性边界

A ordered 保证数据先于元数据落盘是默认,writeback 只日志元数据,journal 数据也入日志最安全 ✓ 正确答案
B writeback 保证数据与元数据一致
C journal 模式性能最好
D 三种模式一致性完全相同
#

24. Linux 软 RAID mdadm 与硬件 RAID 在文件系统层的差异

A 文件系统能看出底层 RAID 类型
B 硬件 RAID 一定有最高性能
C 软 RAID 不占 CPU
D 软/硬 RAID 都对文件系统呈现为块设备,差异在实现层与缓存/fsync 语义,软 RAID 用 mdadm 管理 ✓ 正确答案
#

25. POSIX 文件能力与 setuid 二进制的能力赋权差异

A setuid 不提升权限
B setuid 是整体提权,file capabilities 只授特定能力实现最小权限,是更安全的加固方式 ✓ 正确答案
C file capabilities 比 setuid 权限更大
D 两者机制完全相同
#

26. POSIX 文本文件末尾换行的工程意义与 git diff 的表现

A 末尾换行无意义
B 末尾换行会导致 diff 错误
C git diff 看不出末尾换行
D POSIX 行以换行结尾,缺末尾换行会触发 git diff 的"\ No newline"标记并引起无意义变更,应统一保留 ✓ 正确答案
#

27. bash、dash、zsh 在脚本场景下的差异,sh 链接到 dash 的兼容性

A dash 支持 bash 数组
B Debian 系 /bin/sh 是 dash,脚本用 bash 特有语法时需声明 #!/bin/bash 否则报错 ✓ 正确答案
C zsh 是默认脚本解释器
D sh 一定是 bash
#

28. chattr +i、+a 的工作机制与对 root 提权的影响边界

A +i 只对普通用户生效
B +i 使文件不可变、+a 只追加,对 root 也生效,是加固手段但需 root 解除且受文件系统支持限制 ✓ 正确答案
C root 可无需解除直接写入 +i 文件
D chattr 对所有文件系统都完全支持
#

29. chflags 在 BSD 与 chattr 在 Linux 的等价性差异

A 功能等价但命令与属性名不同(uchg/i 等),且支持的文件系统与权限语义有差异 ✓ 正确答案
B 两者命令完全相同
C chattr 的 s 位在 Linux 一定支持
D NFS 完全支持 chattr 全部属性
#

30. column、pr、tsv 在文本对齐与展示上的应用

A column 对齐列、pr 分页分栏、tsv 是 tab 分隔数据格式,三者用于不同展示/处理需求 ✓ 正确答案
B column 用于分页
C pr 用于对齐列
D tsv 是分页工具
#

31. cp -a、cp -r、cp -L 区别,保留权限与硬链接时为何用 cp -a

A cp -r 保留所有属性
B cp -L 保留符号链接
C cp -a 递归并保留权限/时间戳/符号链接/硬链接,备份迁移应使用;cp -r 只递归,cp -L 解引用链接 ✓ 正确答案
D cp -a 与 cp -r 完全相同
#

32. diff、patch 在配置漂移检测中的作用,patch 失败时如何 dry-run

A patch 用于找差异
B diff 无法检测漂移
C dry-run 会实际修改文件
D diff 比较期望与实际配置发现漂移,patch 应用补丁,可用 --dry-run 预检避免改坏文件 ✓ 正确答案
#

33. envsubst、gettext 在配置文件模板替换中的差异

A 两者都做变量替换
B envsubst 做运行时环境变量模板替换,gettext 做多语言翻译,用途不同 ✓ 正确答案
C gettext 用于替换环境变量
D envsubst 用于国际化
#

34. fallocate、truncate、dd 在创建稀疏文件时的差异

A dd 默认创建稀疏文件
B truncate 创建空洞(稀疏)省空间,fallocate 默认预分配(-n 只保持长度),dd 默认真实写入(seek 可建空洞) ✓ 正确答案
C fallocate 默认不占空间
D truncate 无法创建指定大小文件
#

35. filefrag、xfs_info、dumpe2fs 查看碎片与文件系统元数据的差异

A filefrag 查看文件系统元数据
B dumpe2fs 用于 xfs
C filefrag 看单文件碎片(通用),dumpe2fs 看 ext 元数据,xfs_info 看 xfs 元数据 ✓ 正确答案
D xfs_info 用于 ext4
#

36. grep --color 与 ripgrep --color 在终端输出上的取舍

A rg 默认无颜色
B grep 需显式 --color,rg 默认彩色且性能更好,管道输出时两者都需注意颜色处理 ✓ 正确答案
C grep 性能一定优于 rg
D rg 无法递归搜索
#

37. less、more、tail -f 与 journalctl -f 在跟踪日志时的差别

A less 分页浏览、tail -F 实时跟踪文件追加(rotate 不中断)、journalctl -f 跟踪 systemd 日志并可过滤 ✓ 正确答案
B tail -f 能过滤服务
C journalctl 无法实时跟踪
D more 支持向后翻页
#

38. mktemp 在创建临时文件时的安全实践,避免 /tmp 竞争

A 用固定文件名即可
B /tmp 无竞态风险
C mktemp 生成随机唯一名避免 TOCTOU 竞争,创建后立即使用并 trap 清理,防止符号链接攻击 ✓ 正确答案
D mktemp 默认 0777 权限
#

39. mount --bind 将目录绑定到 NFS 挂载点时的行为与风险,以及 bind 后挂载选项与安全位如何继承、NFS 与本地文件系统权限语义差异如何排查

A bind 后自动继承安全位
B bind 后安全位需显式 remount 收紧,NFS 权限受导出选项与 root_squash 影响,需 findmnt/stat 排查 ✓ 正确答案
C bind 改变底层文件系统
D NFS 与本地 chmod 语义完全相同
#

40. mount --make-shared/--make-private/--make-slave 在容器命名空间的传递

A slave 双向传播
B 传播只影响容器 rootfs
C private 会传播到其他命名空间
D shared 双向传播、private 双向隔离、slave 单向(master 到 slave),容器用其控制卷挂载可见性 ✓ 正确答案
#

41. rename.ul 在批量重命名时的可用性与替代方案

A rename.ul 仅做简单替换,正则需 perl rename,复杂规则可用 shell 循环 + mv 或 mmv ✓ 正确答案
B rename.ul 支持正则
C 所有发行版 rename 都相同
D mv 无法批量重命名
#

42. sed -i 在 GNU/BSD 的差异,备份后缀 -i.bak 的兼容性

A 两者语法完全相同
B GNU 允许 -i 无后缀,BSD 必须带备份后缀,用 -i.bak 可跨平台兼容 ✓ 正确答案
C BSD -i 无后缀也合法
D GNU 不支持 -i.bak
#

43. set -euo pipefail 在脚本中的工程价值,为何单独 set -e 不够

A set -e 已完全足够
B nounset 会允许未定义变量
C pipefail 检查多个命令全部成功
D 单独 set -e 会漏掉管道中前段命令失败与未定义变量,需 pipefail+nounset 组合才健壮 ✓ 正确答案
#

44. shell 变量 IFS 与引号误用导致的 word splitting 问题如何避免

A 未加引号的变量按 IFS 拆成多词,加双引号可阻止 word splitting 与 globbing ✓ 正确答案
B 未加引号的变量不会被拆分
C IFS 对加引号变量也生效
D word splitting 无安全风险
#

45. sort、uniq、awk 三者组合做日志去重的常见坑,时间字段排序为何要 -k1.5

A uniq 只相邻去重需先 sort,时间字段用 -k1.5 从第 1 字段第 5 字符排序,awk 关联数组可免排序去重 ✓ 正确答案
B uniq 无需先排序
C sort 默认按第二字段排序
D awk 无法去重
#

46. sudoedit 与 visudo 在特权文件编辑的安全边界

A sudoedit 用临时副本隔离编辑防提权,visudo 校验 sudoers 语法防止锁死系统 ✓ 正确答案
B sudoedit 让编辑器以 root 运行
C visudo 无语法校验
D sudoedit 直接编辑原文件
#

47. tail -F 与 tail -f 在日志被 rotate 后行为差异,为什么推荐 -F

A tail -f 按 inode 跟踪,rotate 后停旧文件;tail -F 按文件名自动重开新文件,日志轮转场景推荐 -F ✓ 正确答案
B 两者 rotate 后行为相同
C tail -F 不支持重试
D -f 比 -F 更推荐
#

48. tar、cpio 与 rsync 在备份场景的差异及稀疏文件、硬链接、增量与带宽控制如何取舍

A tar 无法打包
B tar 支持带宽控制
C rsync 不能增量
D tar 归档打包、rsync 增量/校验/带宽控制、cpio 底层归档,稀疏/硬链接需各自显式选项处理 ✓ 正确答案
#

49. truncate、dd、shred 在清空或销毁磁盘数据时各自的安全级别与差异

A truncate 能安全销毁数据
B shred 对 SSD 绝对安全
C 单次覆盖对 SSD 一定彻底
D truncate 仅逻辑清空、dd 覆盖、shred 多次覆盖更安全,但 SSD 需 blkdiscard/设备级安全擦除 ✓ 正确答案
#

50. umask 027 与 umask 077 在多用户系统的安全等级差异

A 两者都允许组内读
B 027 允许其他用户写
C 027 组内可读(640/750),077 仅属主可访问(600/700),077 更安全,027 用于组内共享 ✓ 正确答案
D 077 允许同组写
#

51. umask 在 systemd unit 文件与登录脚本中的取值差异

A 登录脚本 umask 影响交互会话,systemd UMask 影响服务进程,服务需在 unit 显式设置 ✓ 正确答案
B 两者作用完全相同
C systemd 服务会加载 .bashrc
D UMask 只影响登录用户
#

52. watch、stdbuf、unbuffer 让管道实时刷新如何配合使用

A unbuffer 增加缓冲
B stdbuf 让输出更慢
C watch 周期执行,stdbuf 关闭缓冲、unbuffer 用 PTY 模拟交互,配合实现命令输出实时刷新 ✓ 正确答案
D watch 无法周期刷新
#

53. xargs -I{} 与 -n1 的性能差异,为什么大数据集应避免 -I

A -I{} 会批量合并参数
B -n1 一定比 -I{} 快
C -I{} 强制逐条执行、子进程开销大,大数据集应改 -n 批量合并参数提升性能 ✓ 正确答案
D -I{} 适合海量文件
#

54. xargs 与 parallel -j 在并行处理文件的性能差异

A xargs -P 与 parallel 功能相同
B parallel 无法并行
C xargs -P 简单并行,parallel 调度更精细(输出同步、重试、资源控制),复杂任务用 parallel ✓ 正确答案
D xargs 无法并行
#

55. 为什么 NFS 共享目录上的 chmod 行为可能与本地 ext4 不同

A NFS 权限与本地完全一致
B NFS 无权限模型
C NFS 受 root_squash 与 uid 映射影响,客户端 root 可能被映射为 nobody,与本地 ext4 权限语义不同 ✓ 正确答案
D root_squash 只影响普通用户
#

56. 为什么不应使用 chattr 给 /etc/passwd 加 +i,否则会影响用户创建

A +i 不影响用户管理
B +i 使 /etc/passwd 不可变,useradd 等写入失败无法创建用户,应改用权限控制与完整性监控 ✓ 正确答案
C useradd 不写 /etc/passwd
D root 可绕过 +i 写入
#

57. 为什么脚本中 cat $file | grep 是不良写法,如何优化

A 该写法性能最优
B 变量无需加引号
C cat 是必须的
D 是 UUOC,grep 可直接读文件,且变量需加引号,应改为 grep pattern "$file" ✓ 正确答案
#

58. 在 CI 中调用 bash 的 -x、-v、set -o nounset 如何选择

A CI 应常开 -x 输出全部
B nounset 会忽略未定义变量
C CI 默认 set -euo pipefail 保证健壮,-x 按需调试(注意敏感信息),-v 查原始行 ✓ 正确答案
D -x 会隐藏变量值
#

59. 文件系统选型 xfs、ext4、btrfs 在大文件、快照、压缩场景下如何决策

A xfs 适合小文件
B 所有场景都用 ext4
C btrfs 无快照
D xfs 适合大文件/大容量,ext4 通用稳定,btrfs 原生支持快照与压缩,需按场景决策 ✓ 正确答案
#

60. Linux 中 file 命令如何识别 ELF、shebang、文本编码

A file 依赖扩展名判断
B file 只能识别文本
C file 通过 magic 内容识别 ELF/shebang/编码,-i 显示 MIME 与 charset ✓ 正确答案
D file 无法识别 ELF
#

61. hexdump、xxd、od 在二进制分析时各自的特性

A od 默认十六进制输出
B xxd 无法反转
C hexdump 格式自定义最强、xxd 支持 -r 反转、od 是 POSIX 标准兼容,按需选型 ✓ 正确答案
D od 默认八进制因此不能用于二进制
#

62. lsattr 的常见属性位 a、c、d、i、j、s、t、u 的工程含义

A a 位表示不可变
B a 只追加、i 不可变、d 备份排除、s 安全删除、u 可恢复,但受文件系统支持限制 ✓ 正确答案
C i 是只追加
D s 位所有文件系统都支持
#

63. lsof -i、ss -tulpn、netstat 在新版本系统中为何逐渐被 ss 取代

A ss 通过 netlink 直接读内核、性能好,适合高并发,netstat/lsof 遍历 /proc 较慢 ✓ 正确答案
B netstat 性能更优
C ss 无法查连接
D lsof 与 ss 功能完全相同
#

64. rename 与 mv 在批量重命名时如何选择,为什么 mv 不能跨设备

A mv 跨设备总是原子
B mv 跨设备不复制数据
C rename 用于单文件移动
D mv 单文件移动/重命名,同设备改目录项原子、跨设备需复制+删除,rename 专用于批量改名 ✓ 正确答案
#

65. script 与 asciinema 在录屏时的文件大小与可检索性差异

A script 是 JSON 格式
B asciinema 回放差
C script 是文本可 grep 检索但含控制字符,asciinema 是 JSON 体积小回放精确但检索需解析 ✓ 正确答案
D script 无法回放
#

66. script、ttyrec、asciinema 录制终端会话的差异与回放

A 三者格式相同
B ttyrec 无法回放
C asciinema 用于文本取证
D script 文本+scriptreplay、ttyrec 专用格式+ttyplay、asciinema JSON+asciinema play,各有回放方式 ✓ 正确答案
#

67. stat、file、file -i 与 hexdump 在判断文件类型与编码时各自用途

A stat 判断文件内容类型
B hexdump 判断编码
C file 依赖扩展名
D stat 看元数据、file 判断类型、file -i 看编码/MIME、hexdump 看原始字节 ✓ 正确答案
#

68. tmpfs、devpts、proc、sysfs 的默认挂载参数错误引发的故障

A tmpfs size 过小致内存/临时文件不足,devpts gid/mode 错致 PTY 不可用,proc/sysfs 需正确挂载 ✓ 正确答案
B tmpfs 大小参数无影响
C devpts 无需挂载
D proc 参数永不引发故障
#

69. 为什么大文件场景应避免使用 vim 直接编辑,如何用 split/tee/sponge 改写

A vim 适合任意大文件
B sponge 会原地截断
C vim 整文件加载内存不适合大文件,应用 split 切分、sed/awk 流式、sponge 原子写回避免损坏 ✓ 正确答案
D 大文件必须用 vim
#

70. 为什么大目录 rm -rf 会卡顿,如何用 rsync --delete 替代

A rm -rf 速度最快
B rsync --delete 会误删
C rm -rf 逐个删元数据卡顿,可先用 rsync --delete 空目录对拷或 mv 后后台删减少卡顿 ✓ 正确答案
D 大目录删除无法优化
#

71. 大循环中频繁 cat 文件的优化手段,read -r 与 while read 行尾空格问题

A 循环内频繁 cat 性能最优
B read 默认保留行尾空格
C 循环外读入内存避免循环内 cat,read -r 禁转义、IFS= 保留行尾空格 ✓ 正确答案
D -r 会解释反斜杠
#

72. 大文件复制的工具选型中 cp 与 rsync 在断点续传、校验与带宽控制上的差异,以及 dd 在裸设备复制中的适用场景

A cp 支持断点续传
B dd 用于文件级复制
C rsync 无带宽控制
D cp 简单无续传校验,rsync 支持断点续传/校验/带宽,dd 适合裸设备块级复制 ✓ 正确答案
#

73. 文件删除后空间未释放的常见原因,lsof 与 fuser 如何排查

A rm 后空间立即释放
B 有进程仍持有已删文件句柄导致空间不释放,用 lsof +L1 | grep deleted 定位进程并关闭/清空 fd ✓ 正确答案
C lsof 无法找已删文件
D 重启无法释放空间