运维简答题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
后发生了什么?
- DNS解析:浏览器查询
www.badiu.com
的IP(dig/nslookup
)。 - TCP三次握手:与服务器建立连接(
SYN → SYN-ACK → ACK
)。 - HTTP请求:发送
GET / HTTP/1.1
。 - 服务器处理:Nginx/Apache 返回HTML/CSS/JS。
- 浏览器渲染:解析DOM、加载资源、执行JS。
- TCP四次挥手:关闭连接(
FIN → ACK
)。
关键技术点:
- DNS(UDP 53)
- TCP(三次握手、滑动窗口)
- HTTP/HTTPS(TLS加密)
- CDN/负载均衡
6. 办公室主机无法上网,如何排查?
排查步骤:
- 检查本地网络:
ip a # 查看IP是否正常 ping 127.0.0.1 # 检查本地网络栈
- 检查网关/DNS:
ping 10.1.0.126 # 网关是否通? ping 8.8.8.8 # 外网是否通? nslookup badiu.com # DNS是否解析?
- 检查路由:
route -n # 查看默认路由 traceroute www.badiu.com # 路由追踪
- 检查防火墙:
iptables -L # 是否有拦截规则?
- 检查代理设置:
env | grep -i proxy # 是否配置了代理?
7. 业务接口特别慢,如何排查?
排查步骤:
- 客户端测试:
curl -o /dev/null -s -w "%{time_total}\n" http://api.example.com # 测延迟
- 服务器负载检查:
top # CPU/内存 vmstat 1 # 系统性能 iostat -x 1 # 磁盘IO
- 网络检查:
ping api.example.com mtr api.example.com # 网络质量
- 数据库检查:
mysql -e "SHOW PROCESSLIST;" # 慢查询?
- 日志分析:
tail -f /var/log/nginx/access.log # 高延迟请求?
8. 网络排错常用命令
命令 | 作用 |
---|---|
ping |
测试网络连通性 |
traceroute /mtr |
路由追踪 |
nslookup /dig |
DNS解析 |
netstat /ss |
查看端口/连接 |
tcpdump |
抓包分析 |
iptables -L |
检查防火墙 |
route -n |
查看路由表 |
9. 如何保障服务器安全?
- 基础安全:
- 禁用root SSH,改用密钥登录。
- 配置防火墙(
iptables/ufw
)。
- 漏洞管理:
- 定期更新补丁(
yum update
)。 - 使用Fail2Ban防暴力破解。
- 定期更新补丁(
- 入侵检测:
- 部署OSSEC监控日志。
- 定期审计(
lynis
)。
- 数据安全:
- 加密敏感数据(
LUKS
)。 - 定期备份(
rsync + cron
)。
- 加密敏感数据(
10. 对运维工程师的理解 & 技术兴趣
运维工程师的职责:
- 稳定性:保障服务SLA(99.9%+)。
- 自动化:CI/CD(Jenkins/Ansible)。
- 监控:Prometheus + Grafana。
- 安全:漏洞扫描 + 应急响应。
技术兴趣方向:
- 云原生:K8s + Docker。
- DevOps:GitOps + Terraform。
- SRE:混沌工程 + 可观测性。
总结
以上是详细的答案,涵盖了Linux、网络、存储、安全、排错等多个运维核心领域。如需更深入某个问题,可进一步探讨!