【问答】Linux系统管理20问:运维高频考点整理

阿里云推广

Linux系统管理高频问题20问

本文整理了Linux运维面试和日常工作中最常见的问题,采用问答形式,方便快速查阅。

Q1: 如何查看系统负载?

A: 三种方式:

# 方式1:uptime(快速查看)
uptime
# 输出:14:30:00 up 15 days, 2:15, 1 user, load average: 0.52, 0.58, 0.59
# load average三个数分别是1分钟、5分钟、15分钟平均负载

# 方式2:top(实时查看)
top -bn1 | grep "load average"

# 方式3:/proc/loadavg
cat /proc/loadavg

负载值接近或超过CPU核心数说明系统繁忙。

Q2: 如何查看内存使用情况?

# free命令(推荐-h人类可读)
free -h
#              total        used        free      shared  buff/cache   available
# Mem:          15Gi       4.2Gi       2.1Gi       512Mi       9.2Gi        10Gi
# Swap:        2.0Gi       256Mi       1.7Gi

# 关键指标:
# used = 应用程序实际使用
# buff/cache = 缓存(可回收)
# available = 真正可用内存(包含可回收缓存)

Q3: 如何查找大文件?

# 查找当前目录下大于100MB的文件
find . -type f -size +100M -exec ls -lh {} \;

# 查看目录占用空间(按大小排序)
du -h --max-depth=1 /var | sort -hr | head -10

# 交互式工具(更直观)
ncdu /

Q4: 如何查看端口占用?

# 方式1:ss命令(推荐,比netstat快)
ss -tulpn
# -t TCP, -u UDP, -l 监听, -p 进程, -n 数字显示

# 方式2:netstat
netstat -tulpn

# 查看特定端口
ss -tulpn | grep :3306

# 查看某个进程的网络连接
ss -tp | grep nginx

Q5: 如何排查CPU占用高的进程?

# 方式1:top(按P排序CPU)
top
# 然后按P(大写)按CPU排序

# 方式2:ps命令
ps aux --sort=-%cpu | head -10

# 查看进程内各线程CPU占用
ps -eLo pid,tid,%cpu,cmd | grep 进程PID

# 追踪进程系统调用(看它在干什么)
strace -p 进程PID

Q6: 如何查看磁盘IO?

# iostat查看磁盘IO(需安装sysstat)
iostat -x 1 5
# -x 扩展信息,1秒刷新,共5次

# 重点关注:
# %util = IO利用率,接近100%说明磁盘饱和
# await = 平均等待时间,>20ms说明IO慢

# 实时查看进程IO
iotop

Q7: 如何配置定时任务?

# 编辑当前用户的crontab
crontab -e

# 格式:分 时 日 月 周 命令
0 2 * * * /opt/backup.sh        # 每天凌晨2点
*/5 * * * * /opt/check.sh       # 每5分钟
0 9 * * 1 /opt/report.sh        # 每周一上午9点

# 查看定时任务
crontab -l

# 查看执行日志
grep CRON /var/log/syslog

Q8: 如何查看系统日志?

# systemd系统用journalctl
journalctl -u nginx -f              # 实时查看nginx日志
journalctl --since "1 hour ago"     # 最近1小时
journalctl -p err                   # 只看错误级别

# 传统日志文件
tail -f /var/log/syslog             # 系统日志
tail -f /var/log/auth.log           # 认证日志
tail -f /var/log/nginx/access.log   # Nginx访问日志

Q9: 如何添加用户和配置sudo?

# 添加用户
sudo adduser username

# 添加到sudo组
sudo usermod -aG sudo username

# 或者编辑sudoers文件
sudo visudo
# 添加:username ALL=(ALL:ALL) NOPASSWD: ALL

# 切换用户
su - username

Q10: 如何配置防火墙?

# UFW(Ubuntu推荐)
sudo ufw status
sudo ufw allow 22/tcp      # SSH
sudo ufw allow 80/tcp      # HTTP
sudo ufw allow 443/tcp     # HTTPS
sudo ufw enable

# Firewalld(CentOS)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

更多问题速查

  • Q11: 如何修改主机名? → hostnamectl set-hostname newname
  • Q12: 如何配置DNS? → 修改/etc/resolv.conf
  • Q13: 如何查看路由表? → ip route 或 route -n
  • Q14: 如何测试网络连通? → ping, traceroute, mtr
  • Q15: 如何查看进程树? → pstree -p
  • Q16: 如何杀死进程? → kill -9 PID(慎用)或 killall 进程名
  • Q17: 如何查看环境变量? → env 或 echo $PATH
  • Q18: 如何查找文件? → find / -name “filename”
  • Q19: 如何压缩解压? → tar -czvf / tar -xzvf
  • Q20: 如何查看命令帮助? → man 命令 或 命令 –help

总结

Linux运维的核心是熟练运用各种命令组合。建议把常用命令做成速查表,贴在显示器旁边。

发表评论