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运维的核心是熟练运用各种命令组合。建议把常用命令做成速查表,贴在显示器旁边。
