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

清理Go/Rust编译时产生的缓存

Go

Mac 1T的磁盘频频空间高级,发现是/Users/yourname/Library/Caches/go-build 目录占用了大量空间。

此目录保存来自 Go 构建系统的缓存构建工件。

如果目录太大,请运行go clean -cache

运行go clean -fuzzcache以删除模糊缓存。


当时直接手工清理了。

之后不多久,该目录又占据了50多G的空间

du -sh */ | sort -h


执行 go clean -cache

除了

  • go clean -cache

还有

  • go clean -fuzzcache 删除模糊缓存

  • go clean -modcache 删除mod的缓存



Rust

另外Rust也占用了大量空间(而且Rust不仅编译速度慢,编译出来的产物,debug模式下也相当大)

在构建 Rust 项目时,Rust 的包管理器 cargo 会在多个目录中生成缓存和构建产物。

1. cargo 会将下载的依赖项缓存到这个目录下,通常位于用户的主目录中:

~/.cargo

其中包括:

  • registry:下载的 crate 的源代码和元数据。
  • git:从 Git 仓库中获取的依赖项。

查看这个目录的大小:

du -sh ~/.cargo

清理:

使用 cargo 自带的清理命令来清理缓存:

cargo clean

该命令需要到具体的项目目录下执行

这个命令会删除当前项目的 target 目录中的所有构建产物。

如果你想要清理全局缓存和编译产物,可以直接删除 ~/.cargo 目录下的缓存:

rm -rf ~/.cargo/registry
rm -rf ~/.cargo/git

2. target 目录

每个 Rust 项目在构建时会在项目根目录下生成一个 target/ 目录,用于存储构建产物,包括编译后的二进制文件、依赖项的编译结果等。这个目录可能会占用大量空间,尤其是当有多个构建配置(如 debugrelease)时。

要查看某个项目的 target/ 目录的大小,运行:

du -sh /path/to/your/project/target

清理:

target/ 目录是 Rust 项目构建后的产物,通常可以安全地删除,特别是如果只是在本地开发时使用。

要删除项目中的 target 目录,进入项目根目录并运行:

rm -rf target

或者,如果你想批量清理多个项目中的 target 目录,可以在终端中使用 find 命令递归查找并删除 target 目录:

find /path/to/your/projects -type d -name target -exec rm -rf {} +

3. ~/.rustup 目录

Rust 工具链 (rustup) 也会占用一些空间,通常位于 ~/.rustup 目录下。这个目录存储了 Rust 工具链的版本、标准库和其他工具。

查看这个目录的大小:

du -sh ~/.rustup

清理:

rustup 也可能占用一些磁盘空间,尤其是当你安装了多个工具链或组件时。你可以查看当前安装的工具链:

rustup toolchain list

如果你发现了不再使用的工具链,可以卸载它们:

rustup toolchain uninstall <toolchain>

例如,卸载 nightly 版本:

rustup toolchain uninstall nightly

之前我已经手工把该目录下多达20G的文件都删了



cargo-cache 工具



推荐 使用 cargo-cache 工具查看和管理缓存

cargo-cache 是一个第三方工具,可以用来查看和清理 cargo 的缓存。可通过 cargo 安装这个工具:

cargo install cargo-cache

安装完成后,运行以下命令查看 cargo 缓存的详细信息:

cargo cache

输出显示的是 cargo 的缓存信息,包括 registrygittarget 目录的大小。

如果你想要清理缓存,也可以使用 cargo-cache

cargo cache --remove-dir all

这是一把梭哈,还可以通过子命令,清理特定类型的缓存,清理超过x天没有使用的缓存等。

详细命令:

cargo cache -help                         
cargo-cache 0.8.3
matthiaskrgr
Manage cargo cacheUSAGE:cargo cache [OPTIONS] [SUBCOMMAND]OPTIONS:-a, --autocleanRemoves crate source checkouts and git repo checkouts-e, --autoclean-expensiveAs --autoclean, but also recompresses git repositories-f, --fsckFsck git repositories-g, --gcRecompress git repositories (may take some time)-h, --helpPrint help information-i, --infoPrint information cache directories, what they are for and what can be safely deleted-k, --keep-duplicate-crates <N>Remove all but N versions of crate in the source archives directory-l, --list-dirsList all found directory paths-n, --dry-runDon't remove anything, just pretend-o, --remove-if-older-than <date>Removes items older than specified date: YYYY.MM.DD or HH:MM:SS-r, --remove-dir <dir1,dir2,dir3>Remove directories, accepted values: all,git-db,git-repos,registry-sources,registry-crate-cache,registry-index,registry-t, --top-cache-items <N>List the top N items taking most space in the cache-V, --versionPrint version information-y, --remove-if-younger-than <date>Removes items younger than the specified date: YYYY.MM.DD or HH:MM:SSSUBCOMMANDS:clean-unref    remove crates that are not referenced in a Cargo.toml from the cachehelp           Print this message or the help of the given subcommand(s)l              check local build cache (target) of a rust projectlocal          check local build cache (target) of a rust projectq              run a queryquery          run a queryr              query each package registry separatelyregistry       query each package registry separatelysc             gather stats on a local sccache cachesccache        gather stats on a local sccache cachetoolchain      print stats on installed toolchainstrim           trim old items from the cache until maximum cache size limit is reachedverify         verify crate sources



另:

cargo-cache 是一个第三方工具,关于如何自己写一个cargo xxx命令可参考 Cargo的自定义命令扩展功能

好处是方便快捷,坏处是很难区分该命令是官方提供还是来自第三方,是否有安全隐患。




另外当Mac磁盘不够用时,重点”关照“以下目录的一些文件:

  • ~/Library/Caches
  • ~/Library/Logs
  • ~/Library/Containers
  • ~/Library/Cookies

相关文章:

清理Go/Rust编译时产生的缓存

Go Mac 1T的磁盘频频空间高级&#xff0c;发现是/Users/yourname/Library/Caches/go-build 目录占用了大量空间。 此目录保存来自 Go 构建系统的缓存构建工件。 如果目录太大&#xff0c;请运行go clean -cache。 运行go clean -fuzzcache以删除模糊缓存。 当时直接手工清理了…...

【linux】 ls命令

ls 命令是 Linux 和 Unix 系统中用于列出目录内容的命令。它显示指定目录下的文件和子目录列表。如果不指定目录&#xff0c;ls 默认显示当前目录下的内容。 基本用法 ls [选项] [文件或目录...] 无选项&#xff1a;简单地列出当前目录下的文件和目录。文件或目录&#xff1…...

STM32的寄存器深度解析

目录 一、STM32 寄存器概述 二、寄存器的定义与作用 三、寄存器分类 1.内核寄存器 2.外设寄存器 四、重要寄存器详解 1.GPIO 相关寄存器 2.定时器相关寄存器 3.中断相关寄存器 4.RCC 相关寄存器 五、寄存器操作方法 1.直接操作寄存器 2.使用库函数操作寄存器 六…...

win11 运行vmware workstation 虚拟机很卡,解决办法

本身win11的hyper V和vmare workstation有兼容性问题&#xff0c;正常来说&#xff0c;不能二者共存 需要在win11上流畅运行vmare虚拟机&#xff0c;需要在win11用管理员权限打开power shell 然后在里面运行命令: bcdedit /set hypervisorlaunchtype off powercfg /powerthr…...

C语言 | Leetcode C语言题解之第404题左叶子之和

题目&#xff1a; 题解&#xff1a; bool isLeafNode(struct TreeNode *node) {return !node->left && !node->right; }int sumOfLeftLeaves(struct TreeNode *root) {if (!root) {return 0;}struct TreeNode **q malloc(sizeof(struct TreeNode *) * 2001);in…...

jeesite支持db2数据库初始化sql

点击下载&#xff1a;jeesite5.8.1-db2-sql.rar 提取码: yqev...

微信小程序页面制作——婚礼邀请函(含代码)

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...

股票量化接口api,国内股票期权怎么交易

炒股自动化&#xff1a;申请官方API接口&#xff0c;散户也可以 python炒股自动化&#xff08;0&#xff09;&#xff0c;申请券商API接口 python炒股自动化&#xff08;1&#xff09;&#xff0c;量化交易接口区别 Python炒股自动化&#xff08;2&#xff09;&#xff1a;获取…...

Spring解决循环依赖的原理

通过将自己注入自己&#xff0c;使用代理对象调用add方法解决了事务失效问题&#xff0c;但是这样不会产生循环依赖吗&#xff1f; 在OrdersCreateServiceImpl 中注入的是OrdersCreateServiceImpl 的代理对象&#xff0c;并不是OrdersCreateServiceImpl 本身实例&#xff0c;构…...

Openal o1初探

9 月 13 日&#xff0c;OpenAI 正式公开一系列全新 AI 大模型&#xff0c;传说的“草莓”终于上线&#xff0c;但是正式命名不叫“草莓”&#xff0c;而是o1。 一、为什么叫o1 为什么取名叫o1&#xff0c;OpenAI是这么说的&#xff1a; For complex reasoning tasks this is…...

基于python+django+vue的学生成绩管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于协同过滤pythondjangovue…...

mimd 公平收敛在相图中的细节

aimd 的收敛已经说腻了&#xff0c;我曾经画了好几次相图。有朋友希望我能画一个 mimd 相图&#xff0c;我就再画一个稍微详细的。 下面相图收敛到稳定点的前提异步 mimd&#xff1a; 之所以要异步&#xff0c;举个例子&#xff0c;在执行 gx 时&#xff0c;要确保 y 已经执…...

爬虫--翻页tips

免责声明&#xff1a;本文仅做分享&#xff01; 伪线程 from DrissionPage import ChromiumPage import timepage ChromiumPage() page.get("https://you.ctrip.com/sight/taian746.html") # 初始化 第0页 index_page 0# 翻页点击函数 sleep def page_turn():page…...

论文内容分类与检测系统源码分享

论文内容分类与检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Comput…...

【MySQL】将表导出CSV(可以使用excel打开)

1、准备工作 查看数据库&#xff1a; show databases;切换数据库&#xff1a; use 数据库名;查看表名字 show tables;2、单个表导出 需要替换导出csv文件目录和表名 SELECT * INTO OUTFILE 目录/文件名.csv FIELDS TERMINATED BY , ENCLOSED BY " LINES TERMINATED …...

通用四期ARM架构银河麒麟桌面操作系统V10【安装、配置FTP服务端】

一、操作环境 服务端&#xff1a;银河麒麟桌面操作系统V10SP1 &#xff08;服务端包链接&#xff1a;https://download.csdn.net/download/AirIT/89747026&#xff09; 客户端&#xff1a;银河麒麟桌面操作系统V10SP1 &#xff08;客户端包链接&#xff1a;https://downloa…...

梧桐数据库(WuTongDB):RBO(Rule-Based Optimizer)优化器简介

RBO&#xff08;Rule-Based Optimizer&#xff0c;基于规则的优化器&#xff09; 是一种早期的数据库查询优化方法&#xff0c;它通过预定义的一组规则来决定查询的执行计划&#xff0c;而不是像 CBO&#xff08;Cost-Based Optimizer&#xff0c;基于成本的优化器&#xff09;…...

【农信网-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…...

Gitea Action 简单配置(CI/CD)

线上pipeline,&#xff08;我使用是本地仓库的&#xff0c;你们使用切换成官网的即可&#xff09; # 工作流的名称name: Build and Push Docker Image deployment-k8s# 触发条件&#xff0c;只在 master 或 main 分支发送推送时触发 on:push:branches:- main# 作业&#xff0c…...

苍穹外卖 修改nginx的端口后websocket连接失败解决

苍穹外卖 修改nginx的端口后websocket连接失败解决 问题&#xff1a; 后端配置好websocket后前端仍显示如图所示的错误 解决&#xff1a; 先用websocket在线工具测试后端是否能正常连接&#xff08;这个基本上不会出现问题&#xff09;用f12观察前端发送的请求 正常来说这个请…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...

sshd代码修改banner

sshd服务连接之后会收到字符串&#xff1a; SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢&#xff1f; 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头&#xff0c…...