The Linux file system follows a standard hierarchy defined by the Filesystem Hierarchy Standard (FHS). Understanding this structure is crucial for DevOps work as it affects where you install applications, configure services, and store logs.
Core Directories
/ (Root)
- The base of the filesystem hierarchy
- All other directories stem from here
/bin (Binaries)
- Essential command binaries for all users
- Contains basic commands like
ls
,cp
,bash
- Typically contains programs needed for booting or repairing the system
/sbin (System Binaries)
- Essential system binaries for system administration
- Commands like
fdisk
,fsck
,ifconfig
,init
- Usually requires root privileges to execute
/etc (Configuration Files)
- System-wide configuration files
- Hosts files like:
- /etc/passwd` (user accounts)
/etc/group
(user groups)/etc/fstab
(filesystem table)/etc/hosts
(hostname mappings)/etc/ssh/sshd_config
(SSH server config)
/dev (Device Files)
- Contains device files representing hardware components
- Example :-
/dev/sda
(first hard disk)/dev/tty
(terminal devices)/dev/null
(null device)/dev/random
(random number generator)
/proc (Process Information)
- Virtual filesystem providing process and kernel information
- Files don’t exist on disk - generated by kernel on access
- Example :-
/proc/cpuinfo
(CPU information)/proc/meminfo
(memory usage)/proc/[pid]/
(directory for each running process)
/var (Variable Data)
- Contains files that frequently change during system operation
- Important subdirectories:
/var/log
(system and application logs)/var/cache
(application cache data)/var/lib
(state information for applications)/var/spool
(queues for printing, mail, etc.)/var/tmp
(temporary files preserved between reboots)
/tmp (Temporary Files)
- Temporary files created by system and users
- Typically cleared on reboot
/usr (User Programs)
- Secondary hierarchy for user applications
- Subdirectories:
/usr/bin
(most user commands)/usr/sbin
(non-vital system binaries)/usr/lib
(libraries for binaries in /usr/bin and /usr/sbin)/usr/local
(locally installed software)/usr/share
(architecture-independent data)
/home (User Home Directories)
- Personal directories for each user
- Contains user-specific configuration files (dotfiles like
.bashrc
)
/root (Root User’s Home)
- Home directory for the root user
- Not in
/home
for security reasons
/boot (Boot Files)
- Files needed for system booting
- Contains kernel images, initramfs, and bootloader files
/lib (Libraries)
- Essential shared libraries for binaries in
/bin
and/sbin
- Similar to DLLs in Windows
/opt (Optional Software)
- Typically used for third-party application installations
- Each application often has its own subdirectory
/mnt (Mount Points)
- Temporary mount points for filesystems
- Traditionally used for manually mounted devices
/media (Removable Media)
- Mount points for removable media like USB drives, CDs
/srv (Service Data)
- Data for services provided by the system
- For example, web server files might go in
/srv/www
/run (Runtime Data)
- Temporary filesystem for runtime data
- Contains information about running system since last boot
- Replaces older
/var/run
in many distributions