Linux服务器巡检脚本
一个用于服务器基础信息查询的脚本
1. 首先创建一个脚本文件
touch daily_check.sh
2. 在脚本文件中写入如下脚本
#!/bin/bash # daily_check.sh —— 单机日常巡检小工具 # Usage: ./daily_check.sh [ > /var/log/daily_check.log ] HOST=$(hostname) NOW=$(date '+%F %T') DIV="--------------------------------------------------" echo "========== 巡检时间: ${NOW} 主机: ${HOST} ==========" echo # 1. 磁盘剩余空间与挂载点 echo "① 磁盘剩余空间与挂载点" printf "%-20s %-8s %-8s %-8s %-5s %s\n" Filesystem Size Used Avail Use% Mounted echo "$DIV" df -hP | grep -vE '^Filesystem|tmpfs|devtmpfs|udev' \ | awk '{printf "%-20s %-8s %-8s %-8s %-5s %s\n", $1,$2,$3,$4,$5,$6}' echo # 2. CPU 使用率(1 秒采样,取 idle 反算) echo "② CPU 使用率(最近 1 秒)" CPU_IDLE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print int($1)}') CPU_USED=$((100 - CPU_IDLE)) echo "CPU 使用率: ${CPU_USED}%" echo # 3. 内存使用率 echo "③ 内存使用率" # 以 /proc/meminfo 为准,算 used = total - free - buffers - cached awk ' /^MemTotal:/ {total=$2} /^MemFree:/ {free=$2} /^Buffers:/ {buff=$2} /^Cached:/ {cache=$2} END{ used=total-free-buff-cache; printf "总内存: %.2f GB, 已用: %.2f GB (%.1f%%), 剩余: %.2f GB\n", total/1024/1024, used/1024/1024, used/total*100, (total-used)/1024/1024 }' /proc/meminfo echo # 4. 系统平均负载 echo "④ 系统平均负载" uptime echo # 5. 整机 CPU 占用百分比 + 近 5 分钟 CPU 占用最高的前 5 个进程 echo "⑤ 整机 CPU 占用 & 近 5 分钟 CPU 占用 TOP5 进程" # --- 整机 CPU 使用率(1 秒采样) --- CPU_IDLE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print int($1)}') CPU_USED=$((100 - CPU_IDLE)) echo "整机 CPU 使用率: ${CPU_USED}%" echo # --- 进程榜 --- PS_FIELDS="pid,ppid,%cpu,%mem,command" ps -eo $PS_FIELDS --sort=-%cpu | head -n 6 echo # 6. 磁盘使用率超过 80% 的挂载点报警 echo "⑥ 磁盘使用率报警阈值(>80%)" df -hP | awk 'NR>1 && int($5)>80 {print $0}' | while read line; do echo ">>> 告警:${line}" done [[ -z $(df -hP | awk 'NR>1 && int($5)>80') ]] && echo "所有磁盘使用率正常" echo echo "======================== 巡检结束 ========================"
3. 授予脚本文件执行权限
chmod +x daily_check.sh
使用:
在需要巡检时找到 daily_chech.sh 的路径,执行后即可看见相关输出
========== 巡检时间: 2025-09-26 14:32:01 主机: web01 ========== ① 磁盘剩余空间与挂载点 Filesystem Size Used Avail Use% Mounted /dev/vda1 40G 12G 26G 32% / /dev/vdb1 100G 55G 40G 58% /data ② CPU 使用率(最近 1 秒) CPU 使用率: 23% ③ 内存使用率 总内存: 7.79 GB, 已用: 3.21 GB (41.2%), 剩余: 4.58 GB ④ 系统平均负载 14:32:01 up 21 days, 3 users, load average: 0.18, 0.25, 0.30 ⑤ 整机 CPU 占用 & 近 5 分钟 CPU 占用 TOP5 进程 整机 CPU 使用率: 23% PID PPID %CPU %MEM COMMAND 1234 1 5.6 2.3 php-fpm: pool www 5678 1234 4.2 1.8 nginx: worker process ... ⑥ 磁盘使用率报警阈值(>80%) 所有磁盘使用率正常 ======================== 巡检结束 ========================