go模块下载中断后残留的tmp目录位于$gocache/download/cache/下,命名形如tmp-abc123,需手动执行rm -rf tmp-*清理,go clean -cache默认不处理;误删其他目录会导致缓存失效。

Go模块下载中断后残留的tmp目录在哪
Go在拉取模块(比如执行go mod download或go build时自动 fetch)过程中若被中断(Ctrl+C、网络断开、磁盘满),会在$GOCACHE下生成未清理的临时目录,路径形如$GOCACHE/download/cache/tmp-*。这些目录不会自动删除,长期积累可能占数GB空间,且go clean -cache默认不清理它们。
手动清理tmp-开头的下载临时目录
直接定位并删除即可,无需额外工具:
- 先确认
GOCACHE位置:go env GOCACHE - 进入该目录下的
download/cache/子目录:cd $(go env GOCACHE)/download/cache - 删除所有
tmp-前缀目录:rm -rf tmp-*
注意:tmp-目录名是随机字符串(如tmp-abc123),不是tmp单个目录;误删cache/下其他非tmp-目录会导致缓存失效,需重新下载。
避免下次再残留:用-x观察过程 + 设置超时
下载中断常因网络不稳定或模块过大,可主动控制行为:
- 加
-x参数查看实际执行命令:go mod download -x,能快速识别卡在哪一步 - 设置
GO111MODULE=on和GOPROXY(如https://goproxy.cn)减少失败概率 - 对慢速网络,临时增大超时:
export GOPROXY="https://goproxy.cn,direct"; export GONOPROXY="",避免代理切换耗时过长
Go本身不提供“下载失败自动清理tmp”的开关,所以预防比事后清理更重要。
自动化清理脚本(谨慎使用)
如果频繁遇到中断,可写一行安全清理命令,避免误删:
find "$(go env GOCACHE)/download/cache" -maxdepth 1 -name "tmp-*" -type d -exec rm -rf {} +
这个find命令限定只删cache/一级下的tmp-目录,不递归进子目录,也不匹配tmp或tmp-foo/bar这类嵌套路径。复制粘贴执行前,建议先去掉-exec部分,用-print预览将删哪些目录。
残留的tmp-目录没有锁文件或状态标记,只要没被当前go进程正在使用,删了就彻底消失——但别在go mod download运行中途执行。











