ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Linux服务器系统巡检脚本

2026/8/10 8:12:18 拓冰建站 浏览量
Linux服务器系统巡检脚本
  1. CPU空闲率
  2. 系统总内存
  3. 系统已使用内存
  4. 系统可用内存
  5. 硬盘交换分区占用
  6. centos-root 分区信息
  7. centos-home 分区信息
  8. 网络使用情况
  9. 负载平均值
  10. 系统中运行的所有进程总数
  11. 正在运行的Java进程
  12. 正在使用的数据库和版本(MySQL,SQL Server)
#!/bin/bash# CPU空闲率
echo "---------------------------------------------------------"
echo "CPU空闲率:"
top -bn1 | grep "Cpu(s)" | \sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | \awk '{print 100 - $1"%"}'# 系统总内存
echo "---------------------------------------------------------"
echo "系统总内存:"
free -m | awk '/Mem:/ {print $2 " MB"}'# 系统已使用内存
echo "---------------------------------------------------------"
echo "系统已使用内存:"
free -m | awk '/Mem:/ {printf "%.2f%%\n", $3*100/$2 }'# 系统可用内存
echo "---------------------------------------------------------"
echo "系统可用内存:"
free -m | awk '/Mem:/ {printf "%.2f%%\n", $7*100/$2 }'# 硬盘交换分区占用
echo "---------------------------------------------------------"
echo "硬盘交换分区占用:"
SWAP=$(free -m | grep Swap)
SWAP_TOTAL=$(echo $SWAP | awk '{print $2}')
SWAP_USED=$(echo $SWAP | awk '{print $3}')
if [ "$SWAP_TOTAL" -eq 0 ]; thenecho "无交换分区"
elseSWAP_USED_PERCENT=$(awk "BEGIN {printf \"%.2f\", ($SWAP_USED/$SWAP_TOTAL)*100}")echo "${SWAP_USED_PERCENT}%"
fi
# 显示 /dev/mapper/centos-root 分区信息
echo "---------------------------------------------------------"
echo "Root 分区信息:"
df -h /dev/mapper/centos-root | awk 'NR==2{print "总大小: " $2, "已使用: " $3, "剩余: " $4, "使用率: " $5}'# 显示 /dev/mapper/centos-home 分区信息
echo "---------------------------------------------------------"
echo "Home 分区信息:"
df -h /dev/mapper/centos-home | awk 'NR==2{print "总大小: " $2, "已使用: " $3, "剩余: " $4, "使用率: " $5}'# 网络使用情况
# 这里我们使用 /proc/net/dev 文件来获取网络接口的接收和发送的字节数
echo "---------------------------------------------------------"
echo "网络使用情况:"
cat /proc/net/dev | awk 'NR>2{printf "%s: Received: %s MB, Transmitted: %s MB\n", $1, $2/1024/1024, $10/1024/1024}'# 负载平均值
echo "---------------------------------------------------------"
echo "负载平均值:"
uptime | awk -F'[a-z]:' '{ print $2}'# 当前在操作系统中运行的所有进程的总数
echo "---------------------------------------------------------"
echo "系统中运行的所有进程的总数:"
ps -e | wc -l# 正在运行的Java进程
echo "---------------------------------------------------------"
echo "正在运行的Java进程:"
ps -ef | grep java | grep -v grep | awk '{java_bin = ""; java_dir = ""; jar_file = "";for (i=1; i<=NF; i++) {if ($i ~ /-D(catalina.base|catalina.home)=/) {split($i, path, "=");java_dir = path[2];} else if ($i ~ /\.jar/) {jar_file = $i;} else if ($i ~ /\/java$/) {java_bin = $i;}}if (java_bin != "" && java_dir != "") {print java_bin " -> " java_dir "/temp";} else if (java_bin != "" && jar_file != "") {print java_bin " -> " jar_file;}
}'# MySQL
echo "---------------------------------------------------------"
if command -v mysql &> /dev/null
thenecho "MySQL版本:"mysql -V
elseecho "MySQL未安装"
fi# SQL Server
if command -v sqlcmd &> /dev/null
thenecho "SQL Server版本:"sqlcmd -Q "SELECT @@VERSION" -h -1
elseecho "SQL Server未安装"
fi