在 Linux 文件系统中,var 并不是某个具体程序或命令的名称,而是 variable 的缩写,含义是可变、易变。它位于根目录下,是系统标准目录之一,主要用来存放系统在运行过程中不断产生、更新或临时保留的数据文件。与存放可执行程序、库文件等相对静态内容的 /usr 目录不同,/var 下的内容会随着服务启动、用户操作、任务执行、日志记录等过程持续变化,因此它是理解 Linux 系统运行状态和排查故障时非常重要的目录。

var 目录的设计定位与核心作用
Linux 文件系统通常遵循 FHS,即文件系统层次结构标准。这个标准把根目录划分为若干职责明确的子目录,让系统文件、用户数据、程序运行数据各归其位。/var 的设计定位就是承载动态数据。所谓动态数据,是指内容会随时间变化、会随系统负载变化、会随服务运行状态变化的文件。例如系统启动日志会在启动时写入,访问日志会随请求不断追加,包管理器缓存会随软件安装和更新而变化,数据库数据文件也会随业务操作持续更新。
把动态数据集中放在 /var 下,有助于系统维护人员区分“安装时写入的文件”和“运行时产生的文件”。前者一般属于软件包的一部分,重装或升级时可能被覆盖;后者则属于系统运行过程中积累的状态,通常需要在升级或重装后保留。比如一个数据库软件安装在 /usr 下,而它的实际数据文件可能存放在 /var/lib 中。这样即使程序文件被更新,数据文件也不会因为软件包升级而轻易丢失。类似的逻辑也体现在日志、缓存、队列等目录中。
从运维角度看,/var 目录还是磁盘空间管理的重要观察点。系统运行时间越长,日志、缓存、队列、临时文件等越可能占用大量空间。如果 /var 所在分区被写满,可能影响日志写入、服务启动、数据库写入,甚至导致系统关键功能异常。因此,很多生产环境会单独关注 /var 的磁盘使用率,并配置日志轮转、缓存清理或定期归档策略,让动态数据在可控范围内增长。
常见子目录及其职责
/var 目录下通常包含多个标准子目录,每个子目录对应一类可变数据。理解这些子目录的职责,有助于在排查问题时快速定位文件位置,也有助于制定合理的清理策略。下面先列出几个最常见、也最重要的子目录。
| 子目录 | 作用说明 |
|---|---|
/var/log | 存放系统和各类服务的日志文件,例如系统启动日志、Nginx 访问日志、数据库运行日志等,是排查系统问题的重要位置 |
/var/cache | 存放应用程序的缓存数据,例如包管理器的软件包缓存、应用生成的缓存文件等,清理该目录通常不会影响程序核心功能 |
/var/spool | 存放等待处理的队列数据,例如打印队列、邮件队列、定时任务队列等,处理完成后数据通常会被移除 |
/var/tmp | 存放临时文件,和 /tmp 的区别是该目录下的临时文件重启后通常不会被自动清理,适合存放需要短期保留的临时数据 |
/var/lib | 存放程序运行时的状态数据,例如数据库的数据文件、Docker 的镜像和容器数据、软件的运行状态记录等 |
其中,/var/log 是运维工作中最常接触的目录之一。系统日志、内核日志、服务日志、应用访问日志等都会集中在这里。当系统出现异常、服务无法启动、接口响应变慢时,查看 /var/log 下的日志往往是第一步。由于日志文件会持续增长,因此它也是磁盘空间膨胀的主要来源之一。
/var/cache 和 /var/tmp 都带有“临时”或“可再生”的意味,但用途不同。/var/cache 通常保存程序为了提高效率而生成的缓存数据,例如包管理器下载的软件包缓存、系统或应用生成的索引缓存等。删除缓存后,程序通常仍能运行,只是下次可能需要重新生成缓存。/var/tmp 则用于存放需要比 /tmp 保留更长时间的临时文件,它的一个特点是系统重启后不一定会自动清空,因此适合存放短期保留、但跨重启仍需使用的临时数据。
/var/lib 和 /var/spool 则更偏向“状态”和“队列”。/var/lib 保存程序运行所需的状态数据,例如数据库的数据文件、Docker 的镜像和容器数据、软件包运行状态记录等。这类文件一旦被误删,可能导致服务无法恢复原有状态。/var/spool 保存等待处理的任务数据,例如打印任务、邮件队列、定时任务队列等。任务被处理完成后,对应文件通常会被移除;如果任务积压,该目录也可能占用较多空间。
查看、清理与运维实践
日常维护中,查看 /var 目录结构、占用空间以及关键日志,是掌握系统运行状态的基本操作。可以通过 ls 命令查看目录内容,通过 du 命令估算目录占用空间,通过 df 命令查看 /var 所在文件系统的剩余空间,通过 tail 命令查看日志末尾内容。以下命令示例可以作为常用排查入口。
# 查看 /var 目录下的一级内容 ls -l /var # 查看 /var/log 下的日志文件 ls -lh /var/log # 查看 /var 目录总占用空间 du -sh /var # 查看 /var 下一级目录的占用空间 du -sh /var/* # 查看 /var 所在文件系统的使用情况 df -h /var # 查看内核日志的最后 50 行 tail -n 50 /var/log/kern.log # 查找 /var/log 下大于 100MB 的日志文件 find /var/log -type f -size +100M
在查看日志时,不建议一开始就使用 cat 一次性输出超大日志文件,因为大文件会刷屏且难以阅读。更稳妥的方式是使用 tail 查看末尾内容,使用 grep 过滤关键词,再结合分页工具进行浏览。例如排查错误时,可以先查看最近日志,再搜索 error、warn、failed 等关键词。对于长期运行的服务,日志末尾往往包含最新状态,因此实时跟踪日志输出也是常见做法。
清理 /var 目录时,必须区分“可再生数据”和“状态数据”。/var/cache 中的缓存通常可以谨慎清理,但最好确认没有程序正在依赖当前缓存,或者选择清理较旧的缓存文件。/var/log 中的日志可以归档或删除过期文件,但删除前应确认日志已经完成收集、归档或不再需要用于审计。/var/lib 中的状态数据通常不应随意删除,因为数据库、包管理器、容器运行时等可能依赖这些文件维持一致性。若确需清理,应先备份,并在测试环境中验证服务能否正常恢复。
使用 var 目录的注意事项与总结
使用 /var 目录时,最重要的原则是尊重其“动态数据”属性,不要把它当成普通文件夹随意移动、删除或覆盖。对于 /var/log,应建立日志轮转机制,避免单个日志文件无限增长。logrotate 等工具可以帮助按天、按大小切割日志,并对旧日志进行压缩或清理。对于 /var/cache,应了解缓存大小与程序性能之间的关系,必要时设置缓存上限或定期清理。对于 /var/lib,则应做好备份策略,因为其中保存的可能是服务恢复所依赖的核心状态。
在服务器运行大量服务时,/var 目录的磁盘使用情况需要纳入监控。如果 /var 与系统根目录共用分区,日志和缓存增长可能挤压根分区空间;如果 /var 单独分区,则应关注该分区容量是否足够。合理的做法是设置磁盘使用率告警,定期分析 /var 下一级目录的占用情况,找出增长最快的目录,并判断其增长是否符合预期。例如日志目录持续增长可能是正常业务增长,也可能是错误日志被大量写入,需要进一步分析日志内容。
总结来看,Linux 中的 /var 目录是系统运行期间动态数据的集中存放位置。它通过 /var/log、/var/cache、/var/spool、/var/tmp、/var/lib 等子目录,分别承载日志、缓存、队列、临时文件和状态数据。理解 /var 的含义和子目录职责,不仅有助于阅读系统文件和程序文档,也有助于进行日志排查、磁盘空间管理和系统维护。对运维人员而言,掌握 /var 目录的常用用法和清理边界,是保持 Linux 系统稳定运行的重要基础。