本文目录导读:

我来介绍几种获取系统负载的脚本方法,涵盖不同操作系统和场景:
Linux 系统负载获取
Bash 脚本基础版
#!/bin/bash # 获取系统负载信息 echo "=== 系统负载信息 ===" echo "1. 当前负载:" uptime echo "" echo "2. 详细负载(1/5/15分钟):" cat /proc/loadavg
更完整的 Bash 脚本
#!/bin/bash
# 完整的系统负载监控脚本
# 获取负载
load=$(uptime | awk -F'load average:' '{print $2}')
load1=$(echo $load | cut -d, -f1)
load5=$(echo $load | cut -d, -f2)
load15=$(echo $load | cut -d, -f3)
# 获取 CPU 核数
cores=$(nproc)
echo "系统负载:"
echo "1分钟 负载: $load1"
echo "5分钟 负载: $load5"
echo "15分钟负载: $load15"
echo "CPU核心数: $cores"
# 计算相对负载
load_percent=$(echo "scale=2; $load1 / $cores * 100" | bc)
echo "CPU使用率: $load_percent%"
# 判断负载状态
if (( $(echo "$load_percent > 75" | bc -l) )); then
echo "⚠️ 警告:系统负载过高!"
elif (( $(echo "$load_percent > 50" | bc -l) )); then
echo "ℹ️ 提示:系统负载中等"
else
echo "✅ 系统负载正常"
fi
Python 脚本(跨平台)
#!/usr/bin/env python3
# 获取系统负载信息
import os
import platform
import psutil
def get_linux_load():
"""Linux系统负载"""
try:
with open('/proc/loadavg', 'r') as f:
load = f.read().split()
return {
'1min': float(load[0]),
'5min': float(load[1]),
'15min': float(load[2])
}
except:
return None
def get_windows_load():
"""Windows系统负载"""
return {
'cpu_percent': psutil.cpu_percent(interval=1),
'memory_percent': psutil.virtual_memory().percent
}
def main():
system = platform.system()
print(f"操作系统: {system}")
if system == "Linux":
load = get_linux_load()
if load:
print(f"负载 1分钟: {load['1min']:.2f}")
print(f"负载 5分钟: {load['5min']:.2f}")
print(f"负载 15分钟: {load['15min']:.2f}")
# 获取CPU核心数
cores = os.cpu_count()
print(f"CPU核心数: {cores}")
# 计算CPU使用率
cpu_percent = load['1min'] / cores * 100
print(f"CPU使用率: {cpu_percent:.1f}%")
elif system == "Windows":
load = get_windows_load()
print(f"CPU使用率: {load['cpu_percent']}%")
print(f"内存使用率: {load['memory_percent']}%")
if __name__ == "__main__":
main()
高级实时监控脚本
#!/bin/bash
# 实时监控系统负载
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
show_load() {
clear
echo "=== 系统负载实时监控 ==="
date '+%Y-%m-%d %H:%M:%S'
echo "-------------------------"
# 获取负载值
read load1 load5 load15 < /proc/loadavg
# 获取CPU核心数
cores=$(nproc)
# 显示负载
printf "1分钟负载: %.2f\n" $load1
printf "5分钟负载: %.2f\n" $load5
printf "15分钟负载: %.2f\n" $load15
# 计算使用率
usage=$(echo "scale=2; $load1 / $cores * 100" | bc)
printf "CPU使用率: %.1f%%\n" $usage
# 显示颜色状态
if (( $(echo "$usage > 75" | bc -l) )); then
echo -e "${RED}状态: 高负载${NC}"
elif (( $(echo "$usage > 50" | bc -l) )); then
echo -e "${YELLOW}状态: 中等负载${NC}"
else
echo -e "${GREEN}状态: 正常${NC}"
fi
echo "-------------------------"
echo "按 Ctrl+C 退出"
}
# 每2秒刷新
while true; do
show_load
sleep 2
done
Windows 批处理脚本
@echo off :: Windows 系统负载获取 echo === Windows 系统负载 === :: 获取CPU使用率 wmic cpu get loadpercentage /value :: 获取内存使用 wmic OS get FreePhysicalMemory,TotalVisibleMemorySize /value :: 获取系统运行时间 net stats srv | find "Statistics since" pause
使用系统内置命令
Linux/macOS
# 简单一行命令 uptime # 最常用 top -bn1 | head -20 # top命令 cat /proc/loadavg # 读取负载文件 mpstat 1 5 # CPU统计 # macOS 使用 sysctl -n vm.loadavg # macOS获取负载
使用 w 命令
#!/bin/bash
w | head -1 | awk '{print "当前负载:" $9, $10, $11}'
监控并记录到日志
#!/bin/bash
# 定时记录系统负载到日志文件
LOG_FILE="/var/log/system_load.log"
log_load() {
timestamp=$(date '+%Y-%m-%d %H:%M:%S')
load=$(uptime | awk -F'load average:' '{print $2}')
echo "$timestamp - Load: $load" >> $LOG_FILE
}
# 创建定时任务
while true; do
log_load
sleep 300 # 每5分钟记录一次
done
使用建议
-
选择适合的方法:
- 简单查询:使用
uptime或cat /proc/loadavg - 详细监控:使用 Python 或完整 bash 脚本
- 实时监控:使用循环刷新脚本
- 简单查询:使用
-
性能考虑:
- 生产环境避免频繁调用(建议最小间隔1秒)
- 对于监控系统,考虑使用成熟工具如
nagios、zabbix
-
权限要求:
- 大多数命令不需要root权限
- 访问
/proc/loadavg需要一定权限
-
跨平台:
如果需要跨平台,推荐使用 Python + psutil
选择最适合你需求的方法即可,如果还有其他特定场景需求,欢迎告诉我!
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播