删.lock文件比重启更有效,因其直接解除构建工具(如gradle、cargo、yocto、微信开发者工具)因异常中断残留的写入锁,避免进程重启后重建锁导致的重复阻塞。

缓存被锁定导致编译卡死,本质是文件锁未释放或缓存状态不一致,不是网络或配置问题——直接删锁、杀进程、清缓存三步到位,别等它自己好。
为什么删.lock文件比重启更有效
Java(Gradle)、Rust(cargo)、Yocto(sstate-cache)甚至微信开发者工具,都依赖.lock文件标记“当前有进程正在写入”。这个文件本身很小,但一旦残留,后续所有构建都会阻塞在等待锁释放。它不随进程退出自动清理,尤其在异常中断(Ctrl+C、IDE崩溃、断电)后极易残留。
-
.gradle/caches/jvm-resolution/或~/.gradle/caches/下的cache.properties.lock和*.lock文件必须手动删除 - Rust 的
~/.cargo/.package-cache是元数据锁重灾区,删它比删target/更治本 - Windows 上
%LOCALAPPDATA%\pip\Cache里的临时锁文件(如tmp_*.whl)常被杀毒软件冻结,pip cache purge不会动它们 - 删之前确认进程已停:比如 Gradle Daemon 还在跑,删了锁也会立刻重建——先
gradle --stop再删
杀对进程比关掉终端更重要
很多构建工具(Gradle、cargo、Unity、PetaLinux)启动后台守护进程,即使你关掉 IDE 或终端,它们仍在后台持有缓存锁。只关窗口没用,得精准终结。
- Gradle:运行
gradle --stop(推荐),或ps aux | grep GradleDaemon | awk '{print $2}' | xargs kill -9(macOS/Linux),Windows 用taskkill /f /im java.exe /t要小心——可能误杀其他 Java 应用,优先用gradle --stop - Rust:
cargo clean不杀 rust-analyzer,需手动终止rust-analyzer进程(VS Code 中 Ctrl+Shift+P → “Developer: Restart Language Server”) - Unity:任务管理器里除了
Unity.exe,还要结束UnityCrashHandler64.exe和UnityHelper.exe,否则 Library 缓存仍被占用 - PetaLinux:
bitbake -c cleanall <recipe></recipe>不释放 sstate 锁,得killall -u $USER python3(Yocto 构建全靠 Python 进程)
清缓存目录不能只信“官方命令”
pip cache purge、cargo clean、mvn clean 都只清一部分,真正卡死的往往是那些没被命令覆盖的中间态缓存。
- pip:必须手动删
%LOCALAPPDATA%\pip\Cache(Windows)或~/.cache/pip/Cache(macOS/Linux),http/子目录里残留的.json锁文件也要清 - Maven:
~/.m2/repository/下的*.lastUpdated文件是隐形锁,删它比删整个 repo 更安全、更快 - 微信开发者工具:
%APPDATA%\Tencent\微信开发者工具\Default\Cache里的Simulator_*和BaseLib目录必须删,否则模拟器渲染层持续读损坏缓存 - Yocto/PetaLinux:
build/tmp/sstate-cache/和build/tmp/deploy/下的stamps/目录含时间戳锁,删它比删整个tmp/更轻量
最常被忽略的点:多个工具共用同一缓存路径(比如 VS Code + CLI 同时开 cargo check),或不同 Python 版本混用 pip 缓存。删之前先确认当前 shell 或 IDE 使用的是哪个 Python 解释器——which python 或 sys.executable,再删对应路径下的缓存,否则白忙一场。











