- Linux 会自动管理 /tmp 和 /var/tmp 等路径下的许多临时文件,但了解它们之间的区别很有用。
- 清理软件包缓存(apt、dnf)和浏览器缓存可以轻松释放几个 GB 的空间,而不会对系统造成风险。
- 内核使用 PageCache、dentry 和 inode,在特定情况下可以使用 sysctl 清空它们。
- Systemd-tmpfiles 及其定时器控制临时文件的定期删除,尤其是在长时间运行的服务器上。
如果你每天都使用 GNU/Linux,迟早会遇到与其他操作系统相同的问题: 临时文件和缓存文件不断增长。 它们会占用大量磁盘空间。虽然 Linux 在自动管理这些文件方面设计得非常出色,但在某些情况下,了解哪些文件被保存、保存在哪里以及如何安全地删除它们仍然很有用。
本文将详细探讨这个问题。 如何在Linux系统中清理临时文件?如何管理不同的缓存? (来自系统、软件包管理器、应用程序或浏览器)以及最重要的几种途径之间存在哪些差异,例如: /tmp y /var/tmp您将看到具体的命令、清晰的解释和各种技巧,帮助您在不删除任何重要文件的情况下释放空间。
Linux 中最重要的临时文件文件夹
在任何现代发行版中,你都会发现一系列用于存储短期数据的目录。 两位主角是文件夹。 /tmp y /var/tmp系统自身和许多应用程序生成的大部分临时文件都存储在这里。
一般来说 路线 /tmp 它用于非常短暂的文件。这通常只有在机器开机时才有意义,而 /var/tmp 它专为需要在重启后仍然有效的临时解决方案而设计。稍后我们将详细了解这意味着什么,以及为什么理解这种区别如此重要。
除了这两个主要位置之外,Linux 还使用 其他一些不太知名但同样相关的目录 当需要释放空间时,尤其是在长时间运行的系统或负载较高的服务器上。
如果您想查看系统用于临时文件等的路径,可以查看以下文件的内容: /usr/lib/tmpfiles.d/您可以在那里找到 systemd-tmpfiles 配置文件,其中描述了要清理哪些目录、清理频率以及清理条件。
在通常出现的其他路线中,以下几条路线尤为突出:
/var/run:包含系统和服务执行信息(PID 文件、套接字等)。/var/spool:存储待处理任务队列,例如打印作业或未送达的电子邮件。/var/log/journal:存储 systemd-journald 的二进制日志,如果不进行轮换或适当限制,这些日志可能会占用大量空间。/run/shm:基于 tmpfs 的共享内存,用于 IPC 和其他内部用途。/var/cache/man:手册页缓存,删除后可无问题地重新生成。
另一方面,我们也不能忘记 许多现代程序会将临时文件、历史记录和缓存存储在您的主文件夹中。几乎总是低 ~/.cache 或者特定的子目录。浏览器、编辑器、办公套件、电子邮件客户端……所有这些通常最终都会放在这个目录下。 /home.

/tmp 和 /var/tmp 的区别
虽然从理论上讲,这两个文件夹的用途相同, 真正的目的 /tmp y /var/tmp 它并不完全相同。了解每个程序的运行方式将有助于您避免删除任何重要文件,并且还能更好地配置您的系统。
/tmp 目录中临时文件的特征
该文件夹 /tmp 是用来 非常短暂的临时文件其理念是,所有最终出现在那里的东西在短期内都是可有可无的,即使在下次重启中消失也无关紧要。
在大多数当前发行版中, 内容 /tmp 它会在启动时、重启时或根据内部 systemd 策略自动清理。 (或者发行版使用的任何机制)。这意味着这些数据并非旨在长期保存,通常会直接挂载到 RAM 中。 tmpfs.
有些用户,尤其是那些拥有高性能台式电脑的用户,会决定 蒙塔尔 /tmp 显式地在 RAM 中 这进一步加快了访问速度并减少了磁盘写入。这种配置适用于内存充足的机器,因为临时文件会在重启后被丢弃。
另一个关键特征是 /tmp 从启动初期阶段即可使用。许多启动脚本都依赖它来存储中间文件、临时套接字或其他在挂载其他文件系统之前需要的数据。
/var/tmp 目录下临时文件的特征
路线 /var/tmp另一方面,它的设计目的是为了 生命周期相当长的临时文件这些不是永久性数据,但这些文件值得保留数天甚至数周。
在许多分布中, 内容 /var/tmp 它不会在每次启动时都被清除。文件保留时间的长短取决于发行版的策略和 systemd-tmpfiles 的配置。例如,有些系统不会自动清空这些文件,而有些系统则会在文件超过一定天数未使用后自动清空。
在某些特定情况下,例如某些版本的 RHEL 或其衍生版本, 文件 /var/tmp 当它们超过约 30 天未活动时,就会被删除。在其他系统中,例如某些默认的 Debian 安装中,可能不会自动清理,这些文件将一直保留,直到您手动删除它们或更改设置。
Se recomienda que /var/tmp 位于“普通”磁盘上 (SSD 或 HDD)而不是 RAM,正是因为存储在其中的数据在重启后可能仍然有用。需要保存恢复状态、崩溃后用于恢复会话的数据或大型中间文件的应用程序通常会使用此路径。
另请注意 /var/tmp 可构成独立安装点的一部分这意味着,在启动过程中,只有在相应的文件系统挂载后才能使用它,因此某些服务在早期阶段将无法使用它。
实际结论:何时清洁每处
简单来说,其理念是: /tmp 它包含临时文件,每次重启后都可以安全地删除这些文件。而 /var/tmp 它存储“长期”临时数据 即使从长远来看,它们仍然不是必不可少的档案,但它们也不应该不断消失。
这就解释了为什么许多工具使用 /tmp 对于短暂数据和 /var/tmp 例如,为了能够……,他们需要保留一些信息。 在发生错误或意外断电后恢复程序状态.
我们需要手动删除临时文件吗?
最常见的问题之一是:这有必要吗? 无需担心手动清理系统临时文件简而言之,在标准的台式电脑上,你通常不需要触碰电脑以外的任何东西…… /home.
现代发行版通常已经具备这些特性。 配置为自动删除不必要的临时文件使用 systemd-tmpfiles 或其他类似工具,普通用户无需操心此事。系统会自动删除不再需要的文件。
如果你管理服务器或计算机,情况就会有所不同。 即使负载很高,它也能几个月不重启。在这种情况下,有可能 /tmp, /var/tmp 或者其他类似的目录会不断增长,直到填满磁盘,尤其是在应用程序运行异常并生成数千个临时文件的情况下。
为避免意外情况,服务器上的最佳实践是 安排定期和自动清洁通过适当调整临时文件策略或使用计划服务和任务来删除特定路径中的旧文件, 检测并删除重复文件.
如果任何时候你需要采取更强硬的策略,你随时都可以。 强制安全地删除临时文件但最好谨慎操作,了解你要访问哪些目录以及其中存储了哪些类型的文件。
清理缓存和临时文件:为什么它能提高性能
除了传统的临时文件之外,Linux 及其上运行的应用程序也需要使用临时文件。 它们大量使用缓存内存 为了加快数据访问速度。这种缓存有时会过度累积,在磁盘空间或内存有限的计算机上,可能会对性能产生负面影响。
我们在此语境中所说的“缓存”指的是 常用数据副本 这些数据存储在速度更快的位置(内存、固态硬盘或专用目录),以避免每次都重新计算或下载所有内容。原始数据仍保留在主硬盘上,但系统会保留副本以优化性能。
正因如此, 定期清除缓存是个好主意 如果你的存储空间被不再需要的数据填满,虽然你通常不需要每天都这样做,但当你发现系统空间严重不足时,就值得检查一下。
当然,我们必须记住 并非所有的声望都是坏事。事实上,大多数情况下,这样做有助于提高读取速度并降低写入速度,因为系统运行更流畅。诀窍在于按需清理,而不是每五分钟就随意清空一次。
使用 apt 和 dnf 清除软件包缓存
老旧Linux系统中最常见的垃圾文件来源之一是 软件包管理器缓存每次安装或更新某些内容时,您的管理器都会下载软件包和元数据,这些软件包和元数据会被保存下来,以便以后可以重复使用。
随着时间的推移,尤其是在频繁更新或拥有大量存储库的情况下,该文件夹可能会增长到几GB。好消息是: 那里的一切都是可再生的。所以您可以放心删除它,不必担心会破坏系统(最坏的情况是,当您需要这些软件包时,它们会被重新下载)。
移除基于 apt 的发行版中的缓存
在基于 Debian、Ubuntu 及相关发行版的系统中,常用的软件包管理器是 apt要彻底清除软件包缓存,可以使用以下命令:
sudo apt clean
这个命令 删除所有已下载的 .deb 文件 缓存目录中积累的元数据,如果很久没有清理,很容易就能释放几百兆字节甚至更多空间。
移除基于 dnf 的发行版中的缓存
在 Fedora 或 RHEL 等现代发行版中,apt 的等效工具是 dnf要清除软件包缓存,您可以使用:
sudo dnf clean all
通过此命令, dnf 会删除已下载的软件包和元数据 此外,它还会强制在下次安装或更新软件时更新软件源信息。实际上,它的功能与 `apt clean` 相同,但使用其自身的内部逻辑。
请记住 dnf 已经能够相当自动地管理自己的缓存。 当版本过时时会自动刷新,因此通常不需要像在基于 apt 的系统上那样频繁地运行此命令。
Linux 中的其他缓存类型:页面缓存、目录项缓存和 inode 缓存
除了下载的软件包之外,Linux 内核本身也需要进行一些额外的处理。 它在内存中维护多个内部缓存。 为了加快对文件系统的访问速度。最著名的技术包括页面缓存(PageCache)、目录项(dentry)和索引节点(inode)。
La PageCache 将最近读取或写入的文件的副本存储在 RAM 中。这样一来,如果需要再次访问这些数据,系统就不必再次访问磁盘。这大大减少了输入/输出操作,使系统运行更加流畅。
另一方面, 目录项和 inode 缓存存储目录信息和文件元数据 (权限、大小、位置等)。它们与 PageCache 协同工作,使得统计信息和目录列表几乎可以瞬间生成,而无需每次都扫描磁盘。
大多数情况下,你不应该手动修改这些缓存,因为内核本身会保护它们。 他管理得非常出色。但是,如果您想在特定时间释放内存或运行性能测试,则可以通过受控机制强制清理内存。
要仅清除页面缓存,您可以运行:
sudo sysctl vm.drop_caches=1
如果只想清除目录项和 inode 缓存,则应使用以下值:
sudo sysctl vm.drop_caches=2
如果你需要 一次性删除页面缓存、目录项和 inode正确的命令是:
sudo sysctl vm.drop_caches=3
这些命令不会破坏磁盘上的数据,它们只会…… 释放用于缓存的内存即便如此,最好也不要过度使用,因为清空后,系统需要重新注水,而且在一段时间内,系统运行速度可能会稍慢一些。
清除浏览器和用户应用程序缓存
存储的另一个主要重点是 用户应用程序缓存尤其是网络浏览器,它们会积累图像、脚本、cookie、本地数据库等等。
任何现代浏览器都允许您 从设置菜单中清除缓存这通常可以通过“隐私”或“历史记录”选项完成,您也可以根据需要删除 cookie 和其他数据。
如果您更喜欢使用终端,例如使用 Firefox 浏览器,您可以选择快捷方式。 从命令行清除当前配置文件的缓存 类似这样的:
rm -rf ~/.cache/mozilla
请记住这种类型的命令 他们未经允许就删除了文件。因此,在按下回车键之前,请仔细检查路径,以免删除不应该删除的内容。
如何使用 systemd 删除 /tmp 中的临时文件
正如我们之前提到的,Linux 通常具有 内容管理的内部政策 /tmp 无需您干预。在采用 systemd 的系统中,这项任务由特定的服务负责。
在许多分布中,由于 systemd-tmp 文件, 文件 /tmp 它们会被自动删除 自启动或上次清洁服务激活以来经过一段时间后这样可以防止目录无限增长。
控制这种行为的关键计时器之一是 systemd-tmpfiles-clean.timer如果要调整时间设置,可以使用文本编辑器编辑其设置,例如:
sudo nano /usr/lib/systemd/system/systemd-tmpfiles-clean.timer
在该文件中,您会看到两个非常重要的参数:
OnBootSec=15min
OnUnitActiveSec=1d
选择 OnBootSec 表示开始后多少分钟 清洁程序首次启动(本例中为 15 分钟)。与此同时, OnUnitActiveSec 标记该区间 在服务的后续执行之间(例如,每天)。
如果您修改这些值以增加或减少清洁频率,则需要…… 重新加载 systemd 配置并重新激活定时器 像这样:
sudo systemctl daemon-reload
sudo systemctl enable --now systemd-tmpfiles-clean.timer
一般来说,建议是 不要手动删除所有内容 /tmp 在不知道里面是什么的情况下如果您怀疑目录已满,最安全的做法通常是重新启动计算机,让系统根据定义的策略自行删除适当的文件。
确实如此,你可以 从以下位置删除文件和子文件夹 /tmp 手动 大多数情况下不会发生任何事情,但如果你触碰了服务正在使用的东西,可能会导致奇怪的错误,所以最好谨慎行事。
系统缓存内存和其他平台示例
为了让您了解大致情况,许多指南建议 定期清除任何操作系统上的缓存不仅适用于 Linux 系统,而且正是为了清除不再使用的数据并释放存储空间。
例如,在Windows系统中,您可以进入存储设置, 使用“删除临时文件”选项在 macOS 上,访问类似这样的路径非常常见。 ~/Biblioteca/Caches 手动删除不再使用的应用程序目录。
Linux 中也有一些针对特定组件的专用工具,例如守护进程。 光盘 (名称服务缓存守护进程),它负责缓存有关用户名、主机和其他服务的信息。如果您想要 重置缓存你可以使用类似这样的命令:
sudo /etc/init.d/nscd restart
这类操作通常很有用,尤其是在…… 网络环境或服务器其中,名称和用户解析会被积极缓存,以提高性能。
关于清除 cookie 和网络数据,Chrome、Firefox 甚至老款 Internet Explorer 等浏览器一直都提供相关功能。 删除临时 Internet 文件、缓存图像和 Cookie 的选项这样既能保护您的隐私,又能释放磁盘空间。
总之,所有平台上的基本理念都是一样的: 临时文件和缓存文件在节省时间方面很有用。但最好时不时地清理一下,以免它们成为负担。
Linux 在这方面尤其突出,因为 它对系统内存和缓存的管理非常出色。这意味着速度和稳定性。即便如此,也可能会遇到特殊情况,例如应用程序出错后会持续写入临时文件,最终导致磁盘空间被占满,使系统几乎完全瘫痪。
当发生这样的事情时,要知道 这些文件是在哪里生成的?如何安全地删除它们? 这是重新掌控局面并继续诊断问题的关键。
简而言之,在 Linux 系统中清理临时文件和缓存是一项任务,如果正确理解,它可以让你: 保持系统轻巧、稳定且空间充足必要时依靠自动机制,需要手动干预时使用适当的命令。
对字节世界和一般技术充满热情的作家。我喜欢通过写作分享我的知识,这就是我在这个博客中要做的,向您展示有关小工具、软件、硬件、技术趋势等的所有最有趣的事情。我的目标是帮助您以简单而有趣的方式畅游数字世界。