本文目录导读:

这个需求很常见,我为你整理了不同平台下获取系统空闲内存的脚本方法。
Linux / macOS
Shell (最通用)
# 方法1: 使用 free 命令 (Linux)
free -h | grep Mem | awk '{print "空闲内存: "$7}'
# 或
free -m | awk 'NR==2{printf "可用内存: %.2f GB\n", $7/1024}'
# 方法2: 从 /proc/meminfo 读取 (Linux)
grep MemAvailable /proc/meminfo | awk '{printf "可用内存: %.2f GB\n", $2/1024/1024}'
# 方法3: macOS 使用 vm_stat
vm_stat | grep "Pages free" | awk '{print "空闲内存: " $3*4096/1024/1024 " MB"}'
Python (跨平台)
import os
import sys
def get_free_memory_linux():
"""Linux 系统"""
with open('/proc/meminfo', 'r') as f:
lines = f.readlines()
meminfo = {}
for line in lines:
parts = line.split(':')
meminfo[parts[0]] = int(parts[1].strip().split()[0]) # kB
# MemAvailable 表示可用内存
available_kb = meminfo.get('MemAvailable', 0)
return available_kb / 1024 / 1024 # 转换为 GB
def get_free_memory_macos():
"""macOS 系统"""
try:
output = os.popen('vm_stat').read()
for line in output.split('\n'):
if 'Pages free' in line:
pages_free = int(line.split(':')[1].strip().rstrip('.'))
return pages_free * 4096 / 1024 / 1024 # GB
except:
return 0
# 判断系统类型
if sys.platform == 'linux':
free_gb = get_free_memory_linux()
elif sys.platform == 'darwin': # macOS
free_gb = get_free_memory_macos()
else:
free_gb = 0
print(f"系统空闲内存: {free_gb:.2f} GB")
Windows
PowerShell (最简单)
# 获取空闲内存 $os = Get-WmiObject -Class Win32_OperatingSystem $freeMem = $os.FreePhysicalMemory / 1MB Write-Host "空闲内存: $([math]::Round($freeMem, 2)) GB" # 或使用较新的 cmdlet $mem = Get-CimInstance Win32_OperatingSystem Write-Host "空闲内存: $([math]::Round($mem.FreePhysicalMemory/1MB, 2)) GB"
Python (Windows)
import ctypes
import ctypes.wintypes
def get_free_memory_windows():
"""Windows 系统"""
class MEMORYSTATUSEX(ctypes.Structure):
_fields_ = [
("dwLength", ctypes.wintypes.DWORD),
("dwMemoryLoad", ctypes.wintypes.DWORD),
("ullTotalPhys", ctypes.c_ulonglong),
("ullAvailPhys", ctypes.c_ulonglong),
("ullTotalPageFile", ctypes.c_ulonglong),
("ullAvailPageFile", ctypes.c_ulonglong),
("ullTotalVirtual", ctypes.c_ulonglong),
("ullAvailVirtual", ctypes.c_ulonglong),
("ullAvailExtendedVirtual", ctypes.c_ulonglong),
]
memory_status = MEMORYSTATUSEX()
memory_status.dwLength = ctypes.sizeof(MEMORYSTATUSEX)
ctypes.windll.kernel32.GlobalMemoryStatusEx(ctypes.byref(memory_status))
# ullAvailPhys 是可用物理内存
return memory_status.ullAvailPhys / 1024 / 1024 / 1024 # GB
print(f"系统空闲内存: {get_free_memory_windows():.2f} GB")
批处理 (Batch)
@echo off wmic OS get FreePhysicalMemory /value
跨平台通用方案 (Node.js)
const os = require('os');
// 方法1: 直接获取
const freeMemory = os.freemem();
const totalMemory = os.totalmem();
console.log(`空闲内存: ${(freeMemory / 1024 / 1024 / 1024).toFixed(2)} GB`);
console.log(`总内存: ${(totalMemory / 1024 / 1024 / 1024).toFixed(2)} GB`);
console.log(`内存使用率: ${((1 - freeMemory / totalMemory) * 100).toFixed(1)}%`);
// 方法2: 更详细的信息
console.log('\n更多信息:');
console.log(process.memoryUsage());
优化建议
针对不同使用场景,我建议:
-
监控脚本:推荐使用
top或htop附加参数top -b -n 1 | grep "KiB Mem" | awk '{print $6 " kB available"}' -
Web 监控页面:用 Python + Flask 或 Node.js + Express
-
定时任务:结合 cron (Linux) 或任务计划程序 (Windows)
选择哪种方式取决于:
- 你的操作系统
- 是否安装了解释器(Python/Node.js)
- 脚本执行频率(频繁执行建议用轻量级 shell)
如果你需要更具体的场景(比如监控脚本配合告警),告诉我你的具体需求,我可以提供更针对性的方案。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播