问题
写 Rust 项目的过程中,执行 make run
偶尔会出现下图中的情况,即 cargo 在 install cargo-binutils 的过程中出现 Blocking,然后阻塞不动
原因
这个问题通常与 cargo 或 rustup 在执行某些操作时的文件锁定有关,可能其他 cargo 或 rustup 实例正在运行,这些工具可能会锁定包缓存,从而导致当前的操作被阻塞。
解决步骤
检查是否有其他 cargo 或 rustup 实例正在运行
ps aux | grep cargo
ps aux | grep rustup
如果有其他进程运行,可以等待它们完成,或者手动终止相关进程。比如我此时运行第一行命令会显示:
当前的进程列表显示有两个 cargo install cargo-binutils 进程正在运行,其中一个处于 T 状态(即 停止 状态),另一个处于 S+ 状态(即 休眠 状态),这表明 cargo 安装操作正在进行,但由于某些原因它可能被阻塞或卡住了。
于是,我尝试使用 kill 命令终止卡住的 cargo 进程:
kill -9 235094
kill -9 236065
然后重新执行 make run,可以正常运行了。