前言
服务器运维是每个后端开发者的必备技能。不管你用的是云服务器还是物理机,掌握基本的运维命令和排查思路,能让你在遇到问题时快速定位并解决。
本文整理了 Linux 服务器日常运维中最常用的检查命令和技巧,可按现象查找对应命令。
服务器整体状态速查
一条命令看服务器整体情况:
plaintext1 行
uptime输出示例:
plaintext1 行
10:38:01 up 1 day, 11:37, 0 users, load average: 0.41, 0.11, 0.03- up 1 day:服务器运行时间
- load average:1分钟、5分钟、15分钟的平均负载
- 负载值一般不超过 CPU 核心数就算正常
CPU 检查
查看 CPU 信息
plaintext3 行
# CPU 型号和核心数
cat /proc/cpuinfo | grep "model name" | head -1
nproc查看 CPU 使用率
plaintext8 行
# 实时监控
top
# 只看 CPU 占用前 10 的进程
top -bn1 | head -17
# 或者用 htop(更好看)
htop查看负载
plaintext1 行
cat /proc/loadavg负载解读:
- load average < CPU 核心数:正常
- load average = CPU 核心数:刚好满载
- load average > CPU 核心数:过载,需要排查
内存检查
查看内存使用
plaintext1 行
free -h输出示例:
plaintext3 行
total used free shared buff/cache available
Mem: 3.4Gi 1.8Gi 159Mi 2.0Mi 1.4Gi 1.3Gi
Swap: 4.0Gi 24Mi 4.0Gi关键指标:
- available:实际可用内存(比 free 更准确)
- Swap 使用量:如果 Swap 使用很高,说明内存不够了
查看内存占用最多的进程
plaintext1 行
ps aux --sort=-%mem | head -10磁盘检查
查看磁盘空间
plaintext1 行
df -h注意: 使用率超过 80% 就要考虑清理了。
查看目录大小
plaintext5 行
# 查看当前目录下各文件夹大小
du -sh * | sort -rh | head -10
# 查看 /var/log 日志占用
du -sh /var/log/*常见清理操作
plaintext5 行
# 清理系统日志
journalctl --vacuum-time=7d
# 清理 apt 缓存
apt clean网络检查
查看网络连接
plaintext8 行
# 查看所有监听端口
ss -tlnp
# 查看所有连接
ss -tanp
# 统计连接数
ss -s测试网络连通性
plaintext8 行
# ping 测试
ping -c 4 8.8.8.8
# DNS 解析测试
nslookup google.com
# 路由追踪
traceroute google.com查看带宽使用
plaintext5 行
# 安装 iftop
apt install iftop
# 实时查看网卡流量
iftop -i eth0进程管理
查看进程
plaintext11 行
# 查看所有进程
ps aux
# 按 CPU 排序
ps aux --sort=-%cpu | head -10
# 按内存排序
ps aux --sort=-%mem | head -10
# 查找特定进程
ps aux | grep nginx杀死进程
plaintext8 行
# 优雅终止
kill PID
# 强制杀死
kill -9 PID
# 按名字杀
pkill nginx日志排查
系统日志
plaintext8 行
# 查看系统日志
tail -f /var/log/syslog
# 查看内核日志
dmesg | tail -20
# 查看登录日志
last应用日志
plaintext6 行
# Nginx 日志
tail -f /var/log/nginx/error.log
# systemd 服务日志
journalctl -u nginx -f
journalctl -u nginx --since "1 hour ago"安全检查
查看登录失败记录
plaintext2 行
# 查看失败登录
grep "Failed password" /var/log/auth.log | tail -20查看当前登录用户
plaintext2 行
who
w检查防火墙
plaintext5 行
# Ubuntu
ufw status verbose
# CentOS
firewall-cmd --list-all常用运维脚本
批量服务器巡检脚本
plaintext23 行
#!/bin/bash
echo "========== 服务器巡检 =========="
echo "时间: $(date)"
echo ""
echo "--- 系统信息 ---"
uptime
echo ""
echo "--- CPU 负载 ---"
cat /proc/loadavg
echo ""
echo "--- 内存使用 ---"
free -h
echo ""
echo "--- 磁盘使用 ---"
df -h | grep -E "^/dev"
echo ""
echo "--- 网络连接数 ---"
ss -s
echo ""
echo "--- 最近登录 ---"
last -5
echo ""
echo "========== 巡检完成 =========="保存为 check.sh,加执行权限后运行:
plaintext2 行
chmod +x check.sh
./check.sh速查表
| 场景 | 命令 |
|---|---|
| 查看 CPU 负载 | uptime |
| 查看内存 | free -h |
| 查看磁盘 | df -h |
| 查看端口 | ss -tlnp |
| 查看进程 | ps aux |
| 实时监控 | top / htop |
| 查看日志 | tail -f /var/log/syslog |
| 测试网络 | ping / curl |
| 查看网卡 | ip addr |
| 防火墙 | ufw status |
总结
服务器运维的核心就是:监控、排查、清理、安全。
养成定期检查的习惯,很多问题在爆发前就能发现。建议把上面的巡检脚本加入 crontab,每天自动跑一次,有问题及时告警。
plaintext2 行
# 每天早上 9 点巡检一次
echo "0 9 * * * /path/to/check.sh >> /var/log/daily-check.log 2>&1" | crontab -本文是「服务器运维笔记」系列第一篇,后续会持续更新更多实用运维技巧。
按变化判断巡检结果
巡检先保存基线:实例版本、重启次数、磁盘与 inode、证书期限、备份时间及请求成功率。累计错误数需要比较相邻窗口增量;磁盘使用率应结合增长速率判断可用时间。
发现进程存活但请求失败时,沿代理、应用、存储分层检查。完成处置后复跑相同探测,并记录仍未恢复的任务。巡检脚本退出码要汇总子检查失败,不能仅以脚本运行结束作为通过。
← 返回文章