You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派5无需重启:CPU核心恢复及虚拟环境自动调整故障排查

树莓派5 .bashrc 自动环境切换+CPU核心控制修复方案

问题根源

你的配置主要存在两个核心问题:

  1. 路径匹配不严谨:$PWD与project_dir的精确匹配会因路径格式(如末尾斜杠、符号链接)或进入子目录时触发错误的恢复逻辑
  2. CPU恢复顺序错误:先设置性能模式再启用核心,导致离线核心无法应用governor配置,看似未恢复

修复后的完整配置

venv_path="$HOME/my_virtualenv"  # 虚拟环境路径
project_dir="$HOME/projects/my_project/jh_project"  # 项目目录
export PREV_CPU_STATE="full" 

# 标准化路径,消除斜杠、符号链接差异
normalize_path() {
    realpath -m "$1"
}

set_power_save() {
    echo "🔋 启用低功耗模式"
    # 仅给在线的CPU0设置powersave模式(其他核心即将被禁用)
    echo "powersave" | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor > /dev/null
    echo "🔻 禁用CPU核心1-3..."
    for i in 1 2 3; do
        [[ -f "/sys/devices/system/cpu/cpu$i/online" ]] && echo 0 | sudo tee /sys/devices/system/cpu/cpu$i/online > /dev/null 2>&1
    done
}

set_performance_mode() {
    echo "🔌 启用性能模式"
    echo "🔺 恢复CPU核心1-3..."
    for i in 1 2 3; do
        if [[ -f "/sys/devices/system/cpu/cpu$i/online" ]]; then
            echo 1 | sudo tee /sys/devices/system/cpu/cpu$i/online > /dev/null 2>&1
            sleep 0.1  # 短暂等待核心上线,确保系统识别
        fi
    done
    # 所有核心在线后统一设置performance模式
    echo "performance" | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor > /dev/null
}

check_cd_and_activate() {
    local current_dir=$(normalize_path "$PWD")
    local target_dir=$(normalize_path "$project_dir")
    
    echo "📂 当前目录: $current_dir"
    echo "📂 上次CPU状态: $PREV_CPU_STATE"

    # 匹配项目目录及其所有子目录
    if [[ "$current_dir" == "$target_dir" || "$current_dir" == "$target_dir"/* ]]; then
        if [[ "$PREV_CPU_STATE" != "low" ]]; then
            # 激活虚拟环境(未激活时执行)
            [[ -d "$venv_path" && -z "$VIRTUAL_ENV" ]] && {
                echo "✅ 激活虚拟环境: $venv_path"
                source "$venv_path/bin/activate"
            }
            set_power_save
            export PREV_CPU_STATE="low"
        fi
    else
        # 完全离开项目目录范围时恢复
        if [[ "$PREV_CPU_STATE" == "low" ]]; then
            echo "🔄 切换至性能模式"
            # 停用虚拟环境(已激活时执行)
            [[ ! -z "$VIRTUAL_ENV" ]] && {
                echo "❌ 停用虚拟环境"
                deactivate
            }
            set_performance_mode
            export PREV_CPU_STATE="full"
        fi
    fi
}

export PROMPT_COMMAND="check_cd_and_activate"

立即生效方法(无需重启)

在当前终端执行:

source ~/.bashrc

额外注意事项

  • sudo无密码权限:确保你的用户能无密码执行tee命令,否则切换时会卡住。执行sudo visudo并添加一行:
    你的用户名 ALL=(ALL) NOPASSWD: /usr/bin/tee
    
    替换你的用户名为树莓派的实际用户名(默认是pi)
  • 子目录支持:修复后的配置会在项目目录的所有子目录下保持低功耗模式,若需仅精确匹配根项目目录,可删除|| "$current_dir" == "$target_dir"/*部分

内容的提问来源于stack exchange,提问作者이정환

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 03:28:09