The /var Hierarchy
Purpose
/var contains variable data files. This
includes spool directories and files, administrative and logging data,
and transient and temporary files.
Some portions of /var are not shareable
between different systems. For instance,
/var/log, /var/lock, and
/var/run. Other portions may be shared, notably
/var/mail, /var/cache/man,
/var/cache/fonts, and
/var/spool/news.
/var is specified here in order to make it
possible to mount /usr read-only. Everything
that once went into /usr that is written to
during system operation (as opposed to installation and software
maintenance) must be in /var.
If /var cannot be made a separate
partition, it is often preferable to move /var
out of the root partition and into the /usr
partition. (This is sometimes done to reduce the size of the root
partition or when space runs low in the root partition.) However,
/var must not be linked to
/usr because this makes separation of
/usr and /var more difficult
and is likely to create a naming conflict. Instead, link
/var to /usr/var.
Applications must generally not add directories to the top level
of /var. Such directories should only be added
if they have some system-wide implication, and in consultation with
the FHS mailing list.
Requirements
The following directories, or symbolic links to directories, are
required in /var:
Directory
Description
cache
Application cache data
lib
Variable state information
local
Variable data for /usr/local
lock
Lock files
log
Log files and directories
opt
Variable data for /opt
run
Data relevant to running processes
spool
Application spool data
tmp
Temporary files preserved between system reboots
Several directories are `reserved' in the sense that they must
not be used arbitrarily by some new application, since they would
conflict with historical and/or local practice. They are:
/var/backups
/var/cron
/var/msgs
/var/preserve
Specific Options
The following directories, or symbolic links to directories,
must be in /var, if the corresponding subsystem
is installed:
Directory
Description
account
Process accounting logs (optional)
crash
System crash dumps (optional)
games
Variable game data (optional)
mail
User mailbox files (optional)
yp
Network Information Service (NIS) database files (optional)
/var/account : Process accounting logs (optional)
Purpose
This directory holds the current active process accounting log
and the composite process usage data (as used in some UNIX-like
systems by lastcomm and
sa).
/var/cache : Application cache data
Purpose
/var/cache is intended for cached data from
applications. Such data is locally generated as a result of
time-consuming I/O or calculation. The application must be able to
regenerate or restore the data. Unlike
/var/spool, the cached files can be deleted
without data loss. The data must remain valid between invocations of
the application and rebooting the system.
Files located under /var/cache may be
expired in an application specific manner, by the system
administrator, or both. The application must always be able to
recover from manual deletion of these files (generally because of a
disk space shortage). No other requirements are made on the data
format of the cache directories.
Rationale
The existence of a separate directory for cached data allows
system administrators to set different disk and backup policies from
other directories in /var.
Specific Options
Directory
Description
fonts
Locally-generated fonts (optional)
man
Locally-formatted manual pages (optional)
www
WWW proxy or cache data (optional)
<package>
Package specific cache data (optional)
/var/cache/fonts : Locally-generated fonts (optional)
Purpose
The directory /var/cache/fonts should be used to store any
dynamically-created fonts. In particular, all of the fonts which are
automatically generated by mktexpk must be located in
appropriately-named subdirectories of /var/cache/fonts.
This standard does not currently incorporate the TeX Directory
Structure (a document that describes the layout TeX files and
directories), but it may be useful reading. It is located at
ftp://ctan.tug.org/tex/
Specific Options
Other dynamically created fonts may also be placed in this tree,
under appropriately-named subdirectories of
/var/cache/fonts.
/var/crash : System crash dumps (optional)
Purpose
This directory holds system crash dumps. As of the date of this
release of the standard, system crash dumps were not supported under
Linux but may be supported by other systems which may comply with the
FHS.
/var/games : Variable game data (optional)
Purpose
Any variable data relating to games in /usr
should be placed here. /var/games should hold
the variable data previously found in /usr;
static data, such as help text, level descriptions, and so on, must
remain elsewhere, such as
/usr/share/games.
Rationale
/var/games has been given a hierarchy of
its own, rather than leaving it underneath
/var/lib as in release 1.2 of this standard.
The separation
allows local control of backup strategies, permissions, and disk
usage, as well as allowing inter-host sharing and reducing clutter in
/var/lib. Additionally,
/var/games is the path traditionally used by BSD.
/var/lock : Lock files
Purpose
Lock files should be stored within the
/var/lock directory structure.
Lock files for devices and other resources shared by multiple
applications, such as the serial device lock files that were
originally found in either /usr/spool/locks or
/usr/spool/uucp, must now be stored in
/var/lock. The naming convention which must be
used is "LCK.." followed by the base name of the device. For example,
to lock /dev/ttyS0 the file "LCK..ttyS0" would be created.
Then, anything wishing to use /dev/ttyS0
can read the lock file and act accordingly (all locks in
/var/lock should be world-readable).
The format used for the contents of such lock files must be the
HDB UUCP lock file format. The HDB format is to store the process
identifier (PID) as a ten byte ASCII decimal number, with a trailing
newline. For example, if process 1230 holds a lock file, it would
contain the eleven characters: space, space, space, space, space,
space, one, two, three, zero, and newline.
/var/log : Log files and directories
Purpose
This directory contains miscellaneous log files. Most logs must
be written to this directory or an appropriate subdirectory.
Specific Options
The following files, or symbolic links to files, must be in
/var/log, if the corresponding subsystem is
installed:
File
Description
lastlog
record of last login of each user
messages
system messages from syslogd
wtmp
record of all logins and logouts
/var/mail : User mailbox files (optional)
Purpose
The mail spool must be accessible through
/var/mail and the mail spool files must take the
form <username>.
Note that /var/mail may be a symbolic link to
another directory.
User mailbox files in this location must be stored in the standard
UNIX mailbox format.
Rationale
The logical location for this directory was changed from
/var/spool/mail in order to bring FHS in-line
with nearly every UNIX distribution. This change is important for
inter-operability since a single /var/mail is
often shared between multiple hosts and multiple UNIX distribution
(despite NFS locking issues).
It is important to note that there is no requirement to
physically move the mail spool to this location. However, programs
and header files must be changed to use
/var/mail.
/var/opt : Variable data for /opt
Purpose
Variable data of the packages in /opt must
be installed in /var/opt/<subdir>, where
<subdir> is the name of the subtree in
/opt where the static data from an add-on
software package is stored, except where superseded by another file in
/etc. No structure is imposed on the internal
arrangement of /var/opt/<subdir>.
Rationale
Refer to the rationale for /opt.
/var/run : Run-time variable data
Purpose
This directory was once intended for system information data
describing the system since it was booted. These functions have been
moved to /run; this directory exists to ensure
compatibility with systems and software using an older version of this
specification.
Requirements
In general, the requirements for /run shall
also apply to /var/run. It is valid to implement
/var/run as a symlink to
/run.
The utmp file, which stores information
about who is currently using the system, is located in this
directory.
Programs should not access both /var/run
and /run directly, except to access
/var/run/utmp.
This is to prevent confusion about where transient files are
located. In general, a program should use either
/var/run or /run to access
these files, not both.
/var/spool : Application spool data
Purpose
/var/spool contains data which is awaiting
some kind of later processing. Data in
/var/spool represents work to be done in the
future (by a program, user, or administrator); often data is deleted
after it has been processed.
UUCP lock files must be placed in /var/lock. See
the above section on /var/lock.
Specific Options
The following directories, or symbolic links to directories,
must be in /var/spool, if the corresponding
subsystem is installed:
Directory
Description
lpd
Printer spool directory (optional)
mqueue
Outgoing mail queue (optional)
news
News spool directory (optional)
rwho
Rwhod files (optional)
uucp
Spool directory for UUCP (optional)
/var/spool/lpd : Line-printer daemon print queues (optional)
Purpose
The lock file for lpd,
lpd.lock, must be placed in
/var/spool/lpd. It is suggested that the lock
file for each printer be placed in the spool directory for that
specific printer and named lock.
Specific Options
Directory
Description
printer
Spools for a specific printer (optional)
/var/spool/rwho : Rwhod files (optional)
Purpose
This directory holds the rwhod information
for other systems on the local net.
Rationale
Some BSD releases use /var/rwho for this
data; given its historical location in /var/spool
on other systems and its approximate fit to the definition of
`spooled' data, this location was deemed more appropriate.
/var/tmp : Temporary files preserved between system reboots
Purpose
The /var/tmp directory is made available
for programs that require temporary files or directories that are
preserved between system reboots. Therefore, data stored in
/var/tmp is more persistent than data in
/tmp.
Files and directories located in /var/tmp
must not be deleted when the system is booted. Although data stored
in /var/tmp is typically deleted in a
site-specific manner, it is recommended that deletions occur at a less
frequent interval than /tmp.