以下是一些常见的Linux运维面试题,涵盖基础命令、系统管理、网络配置、故障排查等核心技能,分为初级、中级、高级三个层次供参考:
一、初级题目(基础操作与概念)
-
文件与目录管理
- 如何递归删除目录及其子内容? Rm -rf dir
- 解释
chmod 755 file.txt的含义,如何给目录设置默认权限?
给file.txt授予755的权限7代表可以读,写,执行,5 代表读,执行。 find命令如何查找7天内被修改过的.log文件并删除? find /path/to/search -type f -name "*.log" -mtime -7 -exec rm {} ;
-
进程管理
- 如何查看系统实时进程状态(类似Windows任务管理器)?
Top -c - 如何强制终止一个进程及其所有子进程?
Kill 和pkill ps aux输出的STAT列中S、Z、D分别代表什么状态? S(休眠),Z(僵尸进程),D(不可中断的睡眠)
- 如何查看系统实时进程状态(类似Windows任务管理器)?
-
系统信息查看
- 如何查看系统内存使用情况? Free -h
- 如何查看磁盘分区及挂载信息?
Df -h lsblk - 解释
load average(负载平均值)的三个数值含义。 分别是1分钟,5分钟,15分钟的平均负载值
-
网络基础
-
如何查看当前系统的所有TCP连接?
netstat -tnlp • -t: 显示 TCP 连接。 • -n: 以数字形式显示地址和端口号。 • -l: 显示监听中的服务器套接字。 • -p: 显示监听套接字的进程 ID 和进程名称。 Netstat -tunlp -u 显示 UDP 连接。这个选项会过滤出所有的 UDP 网络连接信息。与 -t 选项一起使用时,可以同时显示 TCP 和 UDP 连接,但在这个特定的 -tunlp 组合中,它意味着除了 TCP 连接外,还会显示 UDP 连接 -
curl和wget的主要区别是什么?
Curl 是请求,wget是下载 -
如何测试到目标主机的网络延迟和丢包率? ping -c 100 -i 0.1 <host> 查看延迟,traceroute <host> 查看路径,iperf 或 nping 测试带宽和丢包率
-
二、中级题目(系统管理与服务配置)
-
权限与用户管理
- 如何创建一个禁止登录但可以运行脚本的系统用户?
useradd -s /sbin/nologin username - 解释
/etc/passwd和/etc/shadow的区别。
第一个是存储用户信息的,第二个是存储密码的 - 如何限制用户对
/var/log目录的访问,仅允许读取? Chmod +444 /var/log chmod 555 /var/log 和 setfacl -m u:username:r /var/log
- 如何创建一个禁止登录但可以运行脚本的系统用户?
-
服务与日志
- 如何用
journalctl查看最近1小时的系统日志? journalctl --since "1 hour ago" - 如何配置
logrotate对Nginx日志按日切割并保留30天? 编辑 /etc/logrotate.d/nginx,设置 daily 和 rotate 30 - 如何让
systemd服务在崩溃后自动重启? 在 [Service] 部分添加 Restart=always
- 如何用
-
网络配置
- 如何永久修改Linux的IP地址(非DHCP)?
编辑 /etc/network/interfaces(Debian系)或 /etc/sysconfig/network-scripts/ifcfg-<interface>(RedHat系) - 如何用
iptables阻止某个IP访问80端口? Iptables -I INPUT -p tcp –-dport 80 -s x.x.x.x -j DROP - 解释
netstat、ss、lsof的适用场景差异。 netstat 显示连接、路由表等;ss 更现代,性能更好;lsof 列出打开的文件,包括网络文件
- 如何永久修改Linux的IP地址(非DHCP)?
-
Shell脚本
- 编写脚本:统计Nginx日志中访问量前10的IP地址。 awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 10
- 如何避免脚本因错误(如文件不存在)中途退出?
使用 set -e 的反作用,或在错误命令后加 || true - 解释
$?、$0、$#在脚本中的含义。 $? 表示上一个命令的退出状态,$0 表示脚本名,$# 表示参数个数
三、高级题目(性能优化与架构)
- 性能排查
- 服务器负载高但CPU使用率低,可能是什么原因?如何排查? 可能是I/O瓶颈、内存不足、网络问题。使用 iostat、vmstat、dstat 分析
- 如何分析一个进程的IO读写情况?
iotop 或 pidstat -d 查看进程I/O - 解释
sar、vmstat、iostat的输出关键指标。 sar 收集系统活动信息,vmstat 报告虚拟内存统计,iostat 显示CPU和I/O设备的统计
- 安全与加固
- 如何禁用SSH的密码登录,仅允许密钥认证?
编辑 /etc/ssh/sshd_config,设置 PasswordAuthentication no - 如何快速清理服务器上的挖矿病毒进程?
使用 ps aux | grep <miner_process> 找到PID,kill -9 <PID>,检查并删除相关文件,检查crontab和启动项 - 解释SELinux的
Enforcing、Permissive、Disabled模式区别。 Enforcing 强制模式,Permissive 允许但不阻止违规,Disabled 关闭
- 存储与备份
- 如何在线扩展LVM逻辑卷的容量? lvextend -L +<size>G /dev/mapper/<VG>-<LV>,然后 resize2fs /dev/mapper/<VG>-<LV>(ext4文件系统)
- 如何实现MySQL数据库的增量备份? 使用 mysqldump --single-transaction --flush-logs --master-data=2 或 Percona XtraBackup
- 解释
rsync的--delete参数风险及规避方法。 风险在于删除目标中源没有的文件,使用前确保源和目标一致性,使用 --dry-run 测试
- 自动化与集群
- 如何用Ansible批量修改100台服务器的时区?
ansible all -i hosts -m timezone -a "name=Asia/Shanghai" - 解释Kubernetes中Pod、Deployment、Service的关系。 Pod是容器运行的基本单位,Deployment管理Pod的副本和更新,Service提供访问Pod的负载均衡和IP
- 如何设计一个高可用的Nginx反向代理集群? 使用Nginx的 upstream 指令配置多个后端服务器,启用负载均衡和健康检查
四、场景题(综合能力)
- 故障模拟
- 某PHP网站突然无法访问,如何逐步排查? 检查Nginx/Apache、PHP-FPM、数据库服务状态,查看日志,确认网络连通性
- 服务器磁盘空间不足,但
du统计大小远小于df显示,可能是什么原因? 可能是文件删除未释放空间(如删除大文件后未重启服务),使用 lsof | grep deleted 检查 - 用户反馈SSH连接缓慢,如何定位问题? 可能是文件删除未释放空间(如删除大文件后未重启服务),使用 lsof | grep deleted 检查
- 架构设计
- 如何设计一个每天处理1亿条日志的收集与分析系统?
使用ELK Stack(Elasticsearch, Logstash, Kibana)或EFK(Elasticsearch, Fluentd, Kibana) - 解释微服务架构下日志聚合的常见方案(如ELK、Loki)。
集中化日志存储(如Elasticsearch),使用日志管理工具(如Kibana, Grafana Loki) - 如何实现跨地域服务器的文件实时同步? 使用 rsync 结合 cron,或使用分布式文件系统(如Ceph, GlusterFS)
五、附加技能(加分项)
- 容器与云原生
-
如何用Dockerfile优化镜像层体积?
优化Docker镜像:减少层数,使用多阶段构建,清理不必要的文件 -
解释Kubernetes中ConfigMap和Secret的使用场景。 ConfigMap和Secret:ConfigMap存储配置数据,Secret存储敏感信息,如密码、密钥
-
如何排查Pod一直处于
Pending状态的问题? Pod Pending:检查Pod所在节点的资源限制(CPU, 内存),检查PVC(Persistent Volume Claim)是否绑定成功
- 监控与告警
- 如何用Prometheus监控MySQL的慢查询?
使用Prometheus的 mysqld_exporter 或 Percona Monitoring and Management - 解释Zabbix主动模式与被动模式的区别。 使用Prometheus的 mysqld_exporter 或 Percona Monitoring and Management
- 设计一个服务器资源阈值的告警规则(如CPU>90%持续5分钟)。 使用Prometheus Alertmanager,配置告警规则如 groups: [...] rules: [...] for: 5m labels: severity: critical
















