Linux File Hierarchy Structure

The Linux File Hierarchy Structure or the Filesystem Hierarchy Standard (FHS) defines the directory structure and directory contents in Unix-like operating systems.It is maintained by the Linux Foundation.

/ (Root) : Primary hierarchy root and root directory of the entire file system hierarchy.

/bin : Essential command binaries that need to be available in single user mode; for all users, e.g., cat, ls, cp.

/boot : Boot loader files, e.g., kernels, initrd.

/dev : Essential device files, e.g., /dev/null.

/etc : Host-specific system-wide configuration files.

/home : Users’ home directories, containing saved files, personal settings, etc.

/lib : Libraries essential for the binaries in /bin/ and /sbin/.

/media : Mount points for removable media such as CD-ROMs (appeared in FHS-2.3).

/mnt : Temporarily mounted filesystems.

/opt : Optional application software packages.

/sbin : Essential system binaries, e.g., fsck, init, route.

/srv : Site-specific data served by this system, such as data and scripts for web servers, data offered by FTP servers, and repositories for version control systems.

/tmp : Temporary files. Often not preserved between system reboots, and may be severely size restricted.

/usr : Secondary hierarchy for read-only user data; contains the majority of (multi-)user utilities and applications.
/proc : Virtual filesystem providing process and kernel information as files. In Linux, corresponds to a procfs mount. Generally automatically generated and populated by the system, on the fly.

Modern Linux distributions include a /run directory as a temporary filesystem (tmpfs) which stores volatile runtime data, following the FHS version 3.0. According to the FHS version 2.3, such data were stored in /var/run but this was a problem in some cases because this directory is not always available at early boot. As a result, these programs have had to resort to trickery, such as using /dev/.udev, /dev/.mdadm, /dev/.systemd or /dev/.mount directories, even though the device directory isn’t intended for such data.Among other advantages, this makes the system easier to use normally with the root filesystem mounted read-only. For example, below are the changes Debian made in its 2013 Wheezy release: