当前位置: 首页 > news >正文

memc - 基于 shell 的交互式清理内存脚本

创建 memc 脚本:

cat > /usr/local/bin/memc << 'EOF'
#!/bin/bash# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color# 清除屏幕
clear_screen() {printf "\033c"
}# 显示当前内存状态
show_memory_status() {echo -e "${CYAN}========== 当前内存状态 ==========${NC}"free -hecho -e "${CYAN}==================================${NC}\n"
}# 显示清理结果
show_result() {local choice=$1echo -e "\n${GREEN}✓ 清理完成!${NC}"echo -e "${YELLOW}清理后的内存状态:${NC}"free -h
}# 清理函数
clean_cache() {local option=$1echo -e "${YELLOW}正在清理缓存...${NC}"# 执行sync确保数据写入磁盘synccase $option in1)echo -e "${BLUE}清理页面缓存 (Page Cache)...${NC}"echo 1 > /proc/sys/vm/drop_caches;;2)echo -e "${BLUE}清理目录项和索引节点 (dentries & inodes)...${NC}"echo 2 > /proc/sys/vm/drop_caches;;3)echo -e "${BLUE}清理全部缓存 (PageCache + dentries + inodes)...${NC}"echo 3 > /proc/sys/vm/drop_caches;;esacshow_result $option
}# 显示菜单 - 修复版本
show_menu() {local selected=$1shiftlocal options=("$@")local i=0echo -e "${CYAN}请选择要执行的清理操作:${NC}"echo -e "${CYAN}(使用上下箭头选择,回车确认)${NC}\n"for option in "${options[@]}"; doif [ $i -eq $selected ]; thenecho -e "${GREEN}→ ${option}${NC}"elseecho -e "  ${option}"fi((i++))done
}# 主函数
main() {# 检查是否为root用户if [ "$EUID" -ne 0 ]; thenecho -e "${RED}错误:请使用root权限运行此脚本${NC}"echo -e "${YELLOW}尝试:sudo $0${NC}"exit 1fi# 检查drop_caches文件是否存在if [ ! -f /proc/sys/vm/drop_caches ]; thenecho -e "${RED}错误:系统不支持缓存清理${NC}"exit 1fi# 菜单选项 - 修复:移除了多余的选项options=("1. 清理页面缓存 (Page Cache) - 最安全""2. 清理目录项和索引节点 (dentries & inodes)""3. 清理全部缓存 - 最彻底""4. 退出")selected=0key=""# 显示初始内存状态clear_screenshow_memory_statusshow_menu $selected "${options[@]}"# 处理键盘输入while true; doread -rsn1 keyif [[ $key == $'\x1b' ]]; thenread -rsn2 keycase $key in'[A') # 上箭头if [ $selected -gt 0 ]; then((selected--))elseselected=$((${#options[@]}-1))  # 循环到最后一个ficlear_screenshow_memory_statusshow_menu $selected "${options[@]}";;'[B') # 下箭头if [ $selected -lt $((${#options[@]}-1)) ]; then((selected++))elseselected=0  # 循环到第一个ficlear_screenshow_memory_statusshow_menu $selected "${options[@]}";;esacelif [[ $key == "" ]]; then # 回车键case $selected in0)  # 选项1clear_screenecho -e "${CYAN}========== 内存清理工具 ==========${NC}\n"show_memory_statusecho -e "${YELLOW}您选择了:${options[0]}${NC}"read -p "确认执行清理操作?(y/n): " confirmif [[ $confirm == "y" || $confirm == "Y" ]]; thenclean_cache 1elseecho -e "${BLUE}操作已取消${NC}"fiecho -e "\n${CYAN}按任意键返回主菜单...${NC}"read -n1clear_screenshow_memory_statusshow_menu $selected "${options[@]}";;1)  # 选项2clear_screenecho -e "${CYAN}========== 内存清理工具 ==========${NC}\n"show_memory_statusecho -e "${YELLOW}您选择了:${options[1]}${NC}"read -p "确认执行清理操作?(y/n): " confirmif [[ $confirm == "y" || $confirm == "Y" ]]; thenclean_cache 2elseecho -e "${BLUE}操作已取消${NC}"fiecho -e "\n${CYAN}按任意键返回主菜单...${NC}"read -n1clear_screenshow_memory_statusshow_menu $selected "${options[@]}";;2)  # 选项3clear_screenecho -e "${CYAN}========== 内存清理工具 ==========${NC}\n"show_memory_statusecho -e "${YELLOW}您选择了:${options[2]}${NC}"read -p "确认执行清理操作?(y/n): " confirmif [[ $confirm == "y" || $confirm == "Y" ]]; thenclean_cache 3elseecho -e "${BLUE}操作已取消${NC}"fiecho -e "\n${CYAN}按任意键返回主菜单...${NC}"read -n1clear_screenshow_memory_statusshow_menu $selected "${options[@]}";;3)  # 选项4 - 退出echo -e "\n${GREEN}感谢使用,再见!${NC}"exit 0;;esacfidone
}# 捕获Ctrl+C
trap 'echo -e "\n${RED}程序被中断${NC}"; exit 1' INT# 运行主函数
main
EOF

 

授权脚本:

chmod +x /usr/local/bin/memc

 

执行 memc 命令返回如下:

========== 当前内存状态 ==========total        used        free      shared  buff/cache   available
Mem:            31Gi        20Gi       9.9Gi        58Mi       1.2Gi        10Gi
Swap:          8.0Gi       4.8Gi       3.2Gi
==================================请选择要执行的清理操作:
(使用上下箭头选择,回车确认)→ 1. 清理页面缓存 (Page Cache) - 最安全2. 清理目录项和索引节点 (dentries & inodes)3. 清理全部缓存 - 最彻底4. 退出

 

http://www.jsqmd.com/news/434746/

相关文章:

  • hadoop+Spark+django基于深度学习的交通标志识别研究与应用(源码+文档+调试+可视化大屏)
  • 易基因|NCB/IF19.1:颉伟/卢绪坤/张宇团队WGBS+ChIP-seq+RNA-seq等揭示早期胚胎发育过程中H3K36me2调控DNA甲基化重建机制
  • 运维系列虚拟化系列OpenStack系列【仅供参考】:理解 Cinder 架构 - 每天5分钟玩转 OpenStack(45)
  • 探讨2026年无锡多柱式反冲洗过滤器市场,反冲洗过滤器生产厂售后满意度前十名 - 工业设备
  • 2026年3月自动门厂家推荐,精准检测与稳定性能深度解析 - 品牌鉴赏师
  • 2025年12月GESP真题及题解(C++八级): 选择题和判断题(题解)
  • 题解:蓝桥云课 548 时间加法
  • 题解:蓝桥云课 198 人物相关性分析
  • Ubuntu24.04更改SSH端口
  • C# 基于OpenCv的视觉工作流-章30-图像摆正
  • 2026年,陕西买电动伸缩门厂家推荐,实用选购技巧,避坑又省心 - 宁夏壹山网络
  • 想选消防桥架不知哪家靠谱?2026十家高口碑品牌费用与服务保障实测 - 速递信息
  • 2026年知名的240升垃圾桶 推荐:大号垃圾桶/户外垃圾桶/户外环卫垃圾桶制造厂家推荐 - 品牌宣传支持者
  • 2026年3月拧紧机厂家推荐,精准检测与稳定性能深度解析 - 品牌鉴赏师
  • 全国设备回收厂家怎么选?空调板房变压器电线电缆回收2026最新核心测评 - 深度智识库
  • 2026中国半导体展会推荐 半导体人必看——覆盖全产业链的专业展会 - 品牌2026
  • 2026年嘉定区机房专用UPS电池,,索克曼电池公司采购参考名录 - 品牌鉴赏师
  • 适合长辈用的染发膏怎么选?这份避坑指南+推荐清单请收好 - 品牌排行榜
  • 题解:蓝桥云课 149 长草
  • 西安柴油发电机优选|龙鸿机电:上柴发电机现货供应,本土靠谱服务商 - 朴素的承诺
  • 使用thrift的php版本操作hbase数据库
  • 题解:蓝桥云课 2489 进制
  • 预算有限怎么选热浸锌桥架?2026年六款高性价比产品口碑排名评测 - 速递信息
  • 题解:蓝桥云课 760 数的计算
  • 2026年3月SQL网站安全机构推荐,精准检测与稳定性能深度解析 - 品牌鉴赏师
  • 告别繁琐操作!西恩士智能触控系统让零部件清洁度测试仪更好用 - 技术权威说
  • hadoop+Spark+django基于大数据技术的书籍评论情感分析系统(源码+文档+调试+可视化大屏)
  • 2026 年度半导体展览会排行榜 国内知名芯片展会排名推荐 - 品牌2026
  • 探讨全国高性价比优质的专利申请代办机构怎么选 - 工业推荐榜
  • 2026年,甘肃电动伸缩门厂家推荐 万成门业,源头工厂 附选购技巧 - 宁夏壹山网络