10年运维总结的6个零门槛服务器日常巡检与常见基础故障排查实操技巧
前置准备
本次实操基于CentOS 7.9/8.5、Ubuntu 20.04/22.04通用环境,需提前用root或带sudo权限的账号登录服务器(通过SSH工具如PuTTY、Xshell或Mac终端直接ssh user@服务器IP连接)。
技巧1:一键式CPU/内存/磁盘/网络基础资源巡检
无需安装额外工具,用systemctl自带状态组件+原生系统监控命令组合,写1行脚本实现10秒内查完所有核心指标。
操作步骤
- 1.1 新建巡检脚本文件
```
CentOS/Ubuntu通用,用vim编辑器打开
vi /root/quick_check.sh
```
进入vim后按i键切换到输入模式。
- 1.2 粘贴完整可执行脚本
```bash
!/bin/bash
echo "=== 服务器基础资源巡检(`date +%Y-%m-%d %H:%M:%S`) ==="
echo ""
echo "【1. CPU 使用率】"
top -bn1 | grep "Cpu(s)" | awk '{print "CPU占用: " 100 - $8 "%"}'
echo ""
echo "【2. 内存/交换空间使用率】"
free -h | grep Mem | awk '{print "内存总容量: " $2 ",已用: " $3 ",剩余: " $4 ",使用率: " $3/$2100 "%"}'
free -h | grep Swap | awk '{print "交换空间总容量: " $2 ",已用: " $3 ",剩余: " $4 ",使用率: " $3/$2100 "%"}'
echo ""
echo "【3. 磁盘挂载分区使用率】"
df -h | grep -vE 'Filesystem|tmpfs|loop' | awk '{print $1 " (" $6 "): 已用 " $5}'
echo ""
echo "【4. 网络连通性(默认检测百度、阿里云DNS)】"
ping -c 2 114.114.114.114 > /dev/null 2>&1 && echo "114.114.114.114(阿里云DNS): 连通" || echo "114.114.114.114(阿里云DNS): 断开"
ping -c 2 8.8.8.8 > /dev/null 2>&1 && echo "8.8.8.8(谷歌DNS): 连通" || echo "8.8.8.8(谷歌DNS): 断开"
ping -c 2 www.baidu.com > /dev/null 2>&1 && echo "www.baidu.com: 连通(域名解析正常)" || echo "www.baidu.com: 断开(域名解析异常或网络不通)"
echo ""
echo "=== 巡检完成 ==="
```
粘贴后按Esc键退出输入模式,输入:wq回车保存并退出。
- 1.3 赋予脚本执行权限并运行
```
赋予执行权限
chmod +x /root/quick_check.sh
首次运行(后续直接/root/quick_check.sh即可)
/root/quick_check.sh
```
技巧2:快速定位CPU/内存占用TOP5的进程
原生命令top可以实现,但需切换显示逻辑,这里提供直接用一行命令输出静态TOP5的方法,适合批量巡检。
操作步骤
- 2.1 查CPU占用TOP5进程
```
ps aux --sort=-%cpu | head -6
```
参数说明:--sort=-%cpu按CPU占用降序排列,head -6显示表头+前5行。
- 2.2 查内存占用TOP5进程
```
ps aux --sort=-%mem | head -6
```
参数说明:--sort=-%mem按内存占用降序排列。
- 2.3 终止异常进程(非必要勿用,确认进程名PID后再操作)
```
软终止(先尝试,给进程保存数据的机会)
kill 进程PID
硬终止(软终止无效时使用)
kill -9 进程PID
```
技巧3:秒查磁盘IO瓶颈(CentOS/Ubuntu通用)

需提前安装轻量级工具iotop,但安装命令非常简单。
操作步骤
- 3.1 安装iotop
```
CentOS 7/8通用
yum install -y iotop
Ubuntu 20.04/22.04通用
apt update && apt install -y iotop
```
- 3.2 运行iotop查看实时IO
```
仅显示有IO操作的进程,更清晰
iotop -o
```
常用快捷键:按P按进程名排序,按O按IO读写速度降序排列,按q退出。
- 3.3 静态查询最近10秒磁盘IO总负载
```
原生命令,无需安装iotop
iostat -x 1 10
```
重点看%util列,超过80%说明磁盘IO存在瓶颈。
技巧4:一键式清理服务器系统垃圾与旧日志
通用清理脚本,仅清理安全的系统垃圾(临时文件、yum/apt缓存、30天前的系统日志),不会误删业务数据。
操作步骤
- 4.1 新建清理脚本文件
```
vi /root/clean.sh
```
按i键切换输入模式。
- 4.2 粘贴完整可执行脚本
```bash
!/bin/bash
echo "=== 开始清理(`date +%Y-%m-%d %H:%M:%S`) ==="
echo ""
1. 清理系统临时文件
echo "正在清理 /tmp 目录下的文件..."
rm -rf /tmp/
rm -rf /var/tmp/
echo "/tmp 与 /var/tmp 清理完成"
echo ""
2. 清理yum/apt缓存
if [ -f /etc/redhat-release ]; then
echo "检测到CentOS系统,正在清理yum缓存..."
yum clean all
yum makecache fast 可选,提前更新缓存方便后续安装
else
echo "检测到Ubuntu系统,正在清理apt缓存..."
apt clean
apt autoremove -y 清理不再需要的依赖包
fi
echo "包管理器缓存清理完成"
echo ""
3. 清理30天前的系统日志
echo "正在清理30天前的/var/log/目录下的日志文件..."
find /var/log -mtime +30 -name ".log" -exec rm -f {} \;
find /var/log -mtime +30 -name ".gz" -exec rm -f {} \;
find /var/log -mtime +30 -name ".old" -exec rm -f {} \;
echo "30天前的系统日志清理完成"
echo ""
echo "=== 清理完成 ==="
```
按Esc键退出输入模式,输入:wq回车保存并退出。
- 4.3 赋予执行权限并运行
```
chmod +x /root/clean.sh
/root/clean.sh
```
技巧5:快速检测端口是否被占用(含业务端口排查)
操作步骤
- 5.1 检测单个端口是否被占用(通用命令,推荐优先用)
```
比如检测80端口
ss -tuln | grep :80
或者netstat(部分系统需先安装net-tools)
CentOS: yum install -y net-tools
Ubuntu: apt install -y net-tools
netstat -tuln | grep :80
```
如果有输出,说明端口被占用;无输出则未占用。
- 5.2 查看占用端口的进程名与PID
```
比如检测80端口的进程
ss -tulnp | grep :80
```
技巧6:设置定期自动巡检与清理任务
用系统自带的crontab实现,无需安装额外工具。
操作步骤
- 6.1 编辑crontab定时任务
```
crontab -e
```
首次编辑会提示选择编辑器,推荐选3(vim.basic)。
- 6.2 添加定时任务(按i键输入模式)
```
每天早上8点执行巡检脚本,结果输出到/root/check_log.txt(追加模式,避免覆盖前一天的)
0 8 /root/quick_check.sh >> /root/check_log.txt 2>&1
每周日凌晨2点执行清理脚本
0 2 0 /root/clean.sh
```
时间格式说明:分 时 日 月 周,代表任意。
- 6.3 保存并退出
按Esc键,输入:wq回车。
- 6.4 验证定时任务是否添加成功
```
crontab -l
```