Linux 命令面试题目大全

Linux 命令面试题目大全

一、基础命令(30题)

1. 文件目录操作

  1. 如何列出当前目录所有文件(包括隐藏文件)?
  2. ls -l 输出的每一列代表什么含义?
  3. 如何创建多级目录 a/b/c/d
  4. 如何复制整个目录及其子目录?
  5. cpmvrm 命令的区别是什么?
  6. 如何创建一个软链接和硬链接?
  7. 软链接和硬链接的区别是什么?
  8. 如何查找文件系统中所有名为 main.cpp 的文件?
  9. 如何查看文件的类型(二进制、文本等)?
  10. pwddirname 命令有什么区别?

2. 文件内容查看

  1. 如何查看文件的最后10行?
  2. catmorelessheadtail 的区别?
  3. 如何实时查看日志文件的新增内容?
  4. 如何查看二进制文件的内容?
  5. diffvimdiff 有什么区别?

3. 权限管理

  1. chmod 755 file 的含义是什么?
  2. 如何修改文件的所有者和所属组?
  3. umask 022 的含义是什么?
  4. SUID、SGID、Sticky Bit 分别是什么?
  5. 如何设置一个文件为只有所有者可读写执行?

4. 查找命令

  1. findlocate 的区别?
  2. 如何查找7天内被修改过的 .cpp 文件?
  3. 如何查找大于100MB的文件?
  4. 如何在文件中查找包含 "error" 的行?
  5. grep -rgrep -R 有什么区别?

5. 进程管理

  1. 如何查看系统所有进程?
  2. ps aux 各列的含义是什么?
  3. 如何优雅地杀死一个进程?
  4. killkillall 的区别?
  5. 如何查看进程打开的文件?

二、中级命令(25题)

6. 文本处理

  1. 使用 awk 打印文件的第2列
  2. 使用 sed 删除文件中的空行
  3. 如何统计文件中每行单词的出现频率?
  4. cutawk 在提取字段时有什么区别?
  5. 如何合并两个文件的行?

7. 网络相关

  1. 如何查看本机监听的端口?
  2. pingtraceroute 的区别?
  3. 如何查看网络接口的配置信息?
  4. 如何抓取HTTP请求包?
  5. netstatss 哪个更好?

8. 系统监控

  1. 如何查看CPU使用率?
  2. 如何查看内存使用情况?
  3. free -h 输出的含义?
  4. 如何查看磁盘空间使用情况?
  5. iostatvmstat 的区别?

9. 用户管理

  1. 如何创建一个新用户并设置密码?
  2. 如何查看用户的登录历史?
  3. 如何限制用户只能使用特定命令?
  4. susudo 的区别?
  5. 如何查看当前登录的用户?

10. Shell脚本

  1. $0$1$#$@$* 的含义?
  2. 如何获取上一条命令的退出状态?
  3. [ ][[ ]] 的区别?
  4. 如何判断一个文件是否存在?
  5. 如何遍历目录中的所有文件?

三、高级命令(20题)

11. 性能调优

  1. 如何查看系统的负载情况?
  2. 如何找出消耗CPU最多的进程?
  3. 如何监控系统I/O?
  4. straceltrace 的区别?
  5. 如何调试内存泄漏?

12. 安全相关

  1. 如何检查系统的登录失败记录?
  2. 如何配置SSH免密登录?
  3. 如何查看文件的完整性(MD5/SHA)?
  4. 如何限制IP访问?
  5. fail2ban 的作用是什么?

13. 内核与系统

  1. 如何查看Linux内核版本?
  2. 如何查看系统的启动时间?
  3. 如何添加一个内核模块?
  4. sysctl 命令的作用?
  5. 如何查看中断信息?

14. 包管理

  1. rpmyum/dnf 的关系?
  2. dpkgapt 的关系?
  3. 如何从源码编译安装软件?
  4. 如何查看已安装的软件包?
  5. 如何查找某个命令属于哪个包?

四、实战场景题(25题)

场景1:日志分析

  1. 如何统计Nginx日志中每个IP的访问次数?

    示例答案:

    awk '{print $1}' access.log | sort | uniq -c | sort -nr

  2. 如何查找包含 "ERROR" 的日志并显示前后5行?

  3. 如何实时监控日志中出现的错误?

场景2:故障排查

  1. 服务器响应缓慢,如何排查?

  2. 磁盘空间不足,如何找出大文件?

  3. 某个进程CPU占用100%,如何分析?

  4. 网络连接超时,如何诊断?

场景3:数据处理

  1. 如何将一个CSV文件按第二列排序?

  2. 如何将多个文本文件合并为一个?

  3. 如何去除文件中的重复行?

  4. 如何将文件中的空格替换为逗号?

场景4:自动化任务

  1. 如何设置每天凌晨备份指定目录?

  2. 如何监控一个服务,如果挂了就重启?

  3. 如何实现文件变化时自动执行命令?

  4. 如何批量重命名文件?

场景5:系统维护

  1. 如何清理7天前的日志文件?

  2. 如何安全地删除一个正在被使用的文件?

  3. 如何查看系统的硬件信息?

  4. 如何迁移一个正在运行的服务?

  5. 如何优化磁盘性能?

场景6:网络服务

  1. 如何搭建一个简单的HTTP服务器?

  2. 如何配置端口转发?

  3. 如何限制某个用户的网络带宽?

  4. 如何搭建一个VPN?

  5. 如何实现负载均衡?

五、综合能力题(10题)

  1. 解释一下Linux启动过程

  2. 描述一下进程间通信的几种方式

  3. 什么是inode?它的作用是什么?

  4. 解释一下缓冲区(buffer)和缓存(cache)的区别

  5. 什么是僵尸进程?如何避免?

  6. 描述一下虚拟内存的工作原理

  7. 什么是文件描述符?最大是多少?

  8. 解释一下DMA(直接内存访问)

  9. 什么是RAID?常用的RAID级别有哪些?

  10. 解释一下容器和虚拟机的区别

六、Shell脚本编程题(10题)

  1. 写一个脚本,检查磁盘使用率超过90%时报警

  2. 写一个脚本,批量创建用户并设置随机密码

  3. 写一个脚本,监控网站状态,失败时发送邮件

  4. 写一个脚本,统计访问日志中的状态码分布

  5. 写一个脚本,实现文件的增量备份

  6. 解释下面脚本的作用:

    #!/bin/bash
    find /var/log -name "*.log" -mtime +7 -exec rm -f {} ;

  7. 解释下面命令管道的作用:

    ps aux | grep nginx | grep -v grep | awk '{print $2}' | xargs kill -9

  8. 下面的命令有什么问题?如何改进?

    for file in (ls *.txt); do echo "Processing file"
    done

  9. 解释 2>&1>/dev/null 2>&1 的含义

  10. 如何防止脚本被重复执行?

七、最佳实践题(10题)

  1. 如何安全地删除敏感数据?

  2. 如何管理服务器的SSH密钥?

  3. 如何设置安全的文件权限?

  4. 如何监控系统的安全日志?

  5. 如何进行系统备份和恢复?

  6. 如何优化Linux的网络性能?

  7. 如何配置防火墙规则?

  8. 如何设置系统的时区和时间同步?

  9. 如何管理服务的开机自启动?

  10. 如何实现系统的自动化部署?

八、问题排查题(10题)

  1. 服务器无法连接外网,如何排查?

  2. 用户报告 "No space left on device",但df显示还有空间,为什么?

  3. 为什么删除一个文件后,磁盘空间没有释放?

  4. 进程被 killed,如何查看原因?

  5. 系统突然变慢,如何快速定位问题?

  6. SSH连接超时,可能的原因有哪些?

  7. 文件无法删除,显示 "Operation not permitted",为什么?

  8. 如何查看一个命令的完整执行过程?

  9. 系统时间不正确,如何同步?

  10. 如何找出哪个进程占用了某个端口?

九、容器与云原生(10题)

  1. Docker 和虚拟机的主要区别是什么?

  2. 如何构建一个Docker镜像?

  3. 如何查看Docker容器的日志?

  4. Kubernetes中的Pod是什么?

  5. 如何查看Kubernetes集群的状态?

  6. 什么是CI/CD?常用的工具有哪些?

  7. 如何配置Docker的网络?

  8. 什么是命名空间(namespace)和控制组(cgroup)?

  9. 如何限制容器的资源使用?

  10. 如何实现容器的持久化存储?

十、开放性问题(10题)

  1. 你最熟悉的Linux发行版是什么?为什么?

  2. 描述一次你解决的最复杂的Linux故障

  3. 如何设计一个高可用的Linux服务器架构?

  4. 你认为Linux系统管理员最重要的技能是什么?

  5. 如何保证Linux服务器的安全性?

  6. 你如何学习新的Linux技术?

  7. 描述一下你的自动化运维经验

  8. 你如何监控一个生产环境?

  9. 什么是DevOps?你如何实践?

  10. 未来Linux的发展趋势是什么?

面试技巧

回答问题的框架:

  1. 明确问题:确认理解正确
  2. 直接回答:给出核心答案
  3. 详细解释:说明原理和细节
  4. 举例说明:提供实际例子
  5. 扩展知识:展示深度理解

示例回答:

问题 :如何查找系统中所有名为 main.cpp 的文件?

回答

复制代码
我可以使用 find 命令来查找:

1. 基本查找:
   find / -name "main.cpp" 2>/dev/null

2. 更高效的方式(使用数据库):
   locate main.cpp

3. 在当前目录查找:
   find . -name "main.cpp"

4. 添加条件(如最近7天修改):
   find . -name "main.cpp" -mtime -7

find 和 locate 的区别:
- find 是实时查找,功能强大但较慢
- locate 基于数据库,速度快但可能不是最新结果

实际工作中,我会根据需求选择。如果知道文件在特定项目目录,
我会使用 find 并限制查找深度。

注意事项:

  • 不知道的问题诚实回答,但展示学习能力
  • 多展示实际经验,不只是理论知识
  • 注意命令的细节和参数
  • 强调安全意识和最佳实践

这份题库涵盖了Linux系统管理的各个方面,适合不同级别的面试准备。建议根据自己的实际情况选择重点准备。

相关推荐
寻找华年的锦瑟1 小时前
Qt-QStackedWidget
java·数据库·qt
火山灿火山3 小时前
Qt常用控件(一)
服务器·qt
小尧嵌入式5 小时前
QT软件开发知识点流程及图片转换工具的开发
开发语言·arm开发·qt
天涯路s6 小时前
qt怎么将模块注册成插件
java·服务器·前端·qt
Aevget7 小时前
从业务面板到多视图协同:QtitanDocking如何驱动行业级桌面应用升级
c++·qt·ui·ui开发·qt6.3
十八岁牛爷爷8 小时前
快速入门从零开始一个qt程序开发,熟悉最主要的开发组件应用
数据库·qt·php
Wild_Pointer.8 小时前
项目实战:使用QCustomPlot实现多窗口绘制数据(支持GPU加速)
c++·qt·gpu算力
qq_401700418 小时前
QT编程-程序版本号控制
qt
qq_401700419 小时前
QLineEdit+QSS
qt