运维简答题1

1. Linux下如何查看一个端口被什么进程占用?该进程又打开了哪些文件?

查看端口被哪个进程占用

  • netstat 命令(较老,推荐使用 ss):
    netstat -tulnp | grep <端口号>
    
  • ss 命令(推荐,更高效):
    ss -tulnp | grep <端口号>
    
  • lsof 命令(直接查看端口占用):
    lsof -i :<端口号>
    

查看该进程打开了哪些文件

  • lsof -p <PID>(查看进程打开的文件):
    lsof -p $(pgrep <进程名>)  # 或直接 lsof -p <PID>
    

2. 4个同样大小硬盘做RAID,哪种RAID模式获得的可用空间最小?哪个最大?在生产环境中建议哪种RAID?

RAID级别 可用空间 冗余性 性能 适用场景
RAID 0 4块盘总和(最大) 无冗余 最高 临时数据、高性能计算
RAID 1 2块盘总和(镜像) 高冗余 读快,写慢 关键数据备份
RAID 5 3块盘总和(1块校验) 单盘容错 读写均衡 通用存储
RAID 6 2块盘总和(2块校验) 双盘容错 写较慢 高可靠性存储
RAID 10 2块盘总和(镜像+条带) 高冗余 读写均快 数据库、高IO应用

答案:

  • 可用空间最小:RAID 1(仅2块盘容量)
  • 可用空间最大:RAID 0(4块盘总和)
  • 生产环境推荐
    • 数据库/关键业务RAID 10(高性能+冗余)
    • 通用存储RAID 5/6(平衡容量和安全性)

3. 服务器IP地址为 10.1.0.64/26 段的第一个地址,网关是该段最后一个地址。请列出IP、子网掩码、网关,并说明如何配置到Linux服务器。

网络计算:

  • 网段10.1.0.64/26
    • 子网掩码255.255.255.192
    • 可用IP范围10.1.0.65 ~ 10.1.0.126
    • 第一个地址(主机IP):10.1.0.65
    • 最后一个地址(网关):10.1.0.126

Linux 配置(以 eth0 为例):

# 临时设置(重启失效)
ip addr add 10.1.0.65/26 dev eth0
ip route add default via 10.1.0.126

# 永久配置(Ubuntu/Debian: /etc/network/interfaces)
auto eth0
iface eth0 inet static
    address 10.1.0.65
    netmask 255.255.255.192
    gateway 10.1.0.126

# 永久配置(RHEL/CentOS: /etc/sysconfig/network-scripts/ifcfg-eth0)
DEVICE=eth0
BOOTPROTO=static
IPADDR=10.1.0.65
NETMASK=255.255.255.192
GATEWAY=10.1.0.126
ONBOOT=yes

4. Nginx日志保留最近7天,如何实现?

方案1:logrotate(推荐)

# 编辑 /etc/logrotate.d/nginx
/var/log/nginx/*.log {
    daily
    rotate 7
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        /bin/kill -USR1 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null || true
    endscript
}
  • rotate 7:保留7天
  • compress:压缩旧日志

方案2:cron + find 手动清理

# 每天凌晨清理7天前的日志
0 0 * * * find /var/log/nginx -type f -mtime +7 -exec rm -f {} \;

5. 浏览器输入 http://www.badiu.com 后发生了什么?

  1. DNS解析:浏览器查询 www.badiu.com 的IP(dig/nslookup)。
  2. TCP三次握手:与服务器建立连接(SYN → SYN-ACK → ACK)。
  3. HTTP请求:发送 GET / HTTP/1.1
  4. 服务器处理:Nginx/Apache 返回HTML/CSS/JS。
  5. 浏览器渲染:解析DOM、加载资源、执行JS。
  6. TCP四次挥手:关闭连接(FIN → ACK)。

关键技术点

  • DNS(UDP 53)
  • TCP(三次握手、滑动窗口)
  • HTTP/HTTPS(TLS加密)
  • CDN/负载均衡

6. 办公室主机无法上网,如何排查?

排查步骤:

  1. 检查本地网络
    ip a  # 查看IP是否正常
    ping 127.0.0.1  # 检查本地网络栈
    
  2. 检查网关/DNS
    ping 10.1.0.126  # 网关是否通?
    ping 8.8.8.8  # 外网是否通?
    nslookup badiu.com  # DNS是否解析?
    
  3. 检查路由
    route -n  # 查看默认路由
    traceroute www.badiu.com  # 路由追踪
    
  4. 检查防火墙
    iptables -L  # 是否有拦截规则?
    
  5. 检查代理设置
    env | grep -i proxy  # 是否配置了代理?
    

7. 业务接口特别慢,如何排查?

排查步骤:

  1. 客户端测试
    curl -o /dev/null -s -w "%{time_total}\n" http://api.example.com  # 测延迟
    
  2. 服务器负载检查
    top          # CPU/内存
    vmstat 1     # 系统性能
    iostat -x 1  # 磁盘IO
    
  3. 网络检查
    ping api.example.com
    mtr api.example.com  # 网络质量
    
  4. 数据库检查
    mysql -e "SHOW PROCESSLIST;"  # 慢查询?
    
  5. 日志分析
    tail -f /var/log/nginx/access.log  # 高延迟请求?
    

8. 网络排错常用命令

命令 作用
ping 测试网络连通性
traceroute/mtr 路由追踪
nslookup/dig DNS解析
netstat/ss 查看端口/连接
tcpdump 抓包分析
iptables -L 检查防火墙
route -n 查看路由表

9. 如何保障服务器安全?

  1. 基础安全
    • 禁用root SSH,改用密钥登录。
    • 配置防火墙(iptables/ufw)。
  2. 漏洞管理
    • 定期更新补丁(yum update)。
    • 使用Fail2Ban防暴力破解。
  3. 入侵检测
    • 部署OSSEC监控日志。
    • 定期审计(lynis)。
  4. 数据安全
    • 加密敏感数据(LUKS)。
    • 定期备份(rsync + cron)。

10. 对运维工程师的理解 & 技术兴趣

运维工程师的职责:

  • 稳定性:保障服务SLA(99.9%+)。
  • 自动化:CI/CD(Jenkins/Ansible)。
  • 监控:Prometheus + Grafana。
  • 安全:漏洞扫描 + 应急响应。

技术兴趣方向:

  • 云原生:K8s + Docker。
  • DevOps:GitOps + Terraform。
  • SRE:混沌工程 + 可观测性。

总结

以上是详细的答案,涵盖了Linux、网络、存储、安全、排错等多个运维核心领域。如需更深入某个问题,可进一步探讨!