Linux File System Cheat Sheet

cheatsheet linux

Common Directories

  • / : Root directory, the top-level of the file system.
  • /bin : Essential command binaries for all users (e.g., ls, cp).
  • /boot : Boot loader files, including the kernel.
  • /dev : Device files, representing hardware components.
  • /etc : System configuration files.
  • /home : User home directories.
  • /lib : Essential shared libraries and kernel modules.
  • /media : Mount points for removable media.
  • /mnt : Temporary mount point for filesystems.
  • /opt : Optional software packages.
  • /proc : Virtual filesystem providing process and kernel information.
  • /root : Home directory for the root user.
  • /run : Runtime variable data.
  • /sbin : System binaries for administration (e.g., ifconfig, reboot).
  • /srv : Data for services provided by the system.
  • /sys : Virtual filesystem for kernel and hardware information.
  • /tmp : Temporary files, cleared on reboot.
  • /usr : Secondary hierarchy for user utilities and applications.
  • /var : Variable data files, like logs and databases.

/etc - Configuration Details

PathPurpose
/etc/passwdUser account information
/etc/shadowEncrypted passwords (root only)
/etc/groupGroup definitions
/etc/hostsStatic hostname to IP mappings
/etc/resolv.confDNS resolver configuration
/etc/hostnameSystem hostname
/etc/fstabFilesystem mount table
/etc/crontabSystem-wide cron jobs
/etc/sudoersSudo permissions (edit with visudo)
/etc/ssh/sshd_configSSH server configuration
/etc/ssl/certs/CA certificates
/etc/systemd/system/Custom systemd units
/etc/profileSystem-wide shell profile
/etc/bashrc or /etc/bash.bashrcSystem-wide bash settings
/etc/environmentSystem-wide environment variables

Network Configuration (varies by distro)

DistroPath
RHEL/CentOS/etc/sysconfig/network-scripts/
Debian/Ubuntu/etc/network/interfaces or /etc/netplan/
All (NetworkManager)/etc/NetworkManager/

/var - Variable Data Details

PathPurpose
/var/log/Log files
/var/log/syslogMain system log (Debian/Ubuntu)
/var/log/messagesMain system log (RHEL/CentOS)
/var/log/auth.logAuthentication logs (Debian/Ubuntu)
/var/log/secureAuthentication logs (RHEL/CentOS)
/var/log/dmesgKernel ring buffer
/var/log/journal/systemd journal (binary)
/var/cache/Application cache files
/var/spool/Queued data (mail, print, cron)
/var/lib/Persistent application data
/var/www/Web server content (common location)
/var/tmp/Temporary files preserved between reboots

Reading Logs

# Traditional logs
tail -f /var/log/syslog
grep "error" /var/log/syslog
 
# systemd journal
journalctl -f                    # Follow all logs
journalctl -u nginx              # Specific service
journalctl --since "1 hour ago"  # Time-based
journalctl -p err                # By priority

/usr - User Programs Details

PathPurpose
/usr/bin/User command binaries
/usr/sbin/System admin binaries
/usr/lib/Libraries for /usr/bin and /usr/sbin
/usr/local/Locally installed software (manual installs)
/usr/local/bin/Locally installed binaries
/usr/share/Architecture-independent data
/usr/share/doc/Documentation
/usr/share/man/Manual pages
/usr/include/C header files
/usr/src/Source code (kernel sources)

/proc - Process and Kernel Information

Virtual filesystem - doesn’t exist on disk.

PathPurpose
/proc/cpuinfoCPU information
/proc/meminfoMemory information
/proc/versionKernel version
/proc/[PID]/Per-process information
/proc/[PID]/cmdlineCommand that started process
/proc/[PID]/fd/Open file descriptors
/proc/[PID]/environEnvironment variables
/proc/net/Network statistics
/proc/sys/Kernel parameters (tunables)

Useful /proc Examples

# CPU info
cat /proc/cpuinfo | grep "model name"
 
# Memory (in KB)
cat /proc/meminfo | head -3
 
# Kernel parameters
cat /proc/sys/net/ipv4/ip_forward
 
# See what a process is doing
ls -la /proc/$(pgrep nginx | head -1)/fd

/dev - Device Files

PathPurpose
/dev/nullDiscard output
/dev/zeroSource of null bytes
/dev/randomRandom bytes (blocking)
/dev/urandomRandom bytes (non-blocking)
/dev/sdaFirst SCSI/SATA disk
/dev/sda1First partition on sda
/dev/nvme0n1First NVMe disk
/dev/ttyCurrent terminal
/dev/pts/Pseudo-terminals (SSH sessions)

Practical Guidance

Finding Configuration Files

# Find all config files for a package
dpkg -L package | grep /etc    # Debian/Ubuntu
rpm -qc package                # RHEL/CentOS

Checking Disk Usage by Directory

du -h --max-depth=1 /var | sort -h

Finding Large Files

find / -type f -size +100M 2>/dev/null

Cleaning Up Disk Space

# Check what's using space in /var
du -sh /var/log/*
du -sh /var/cache/*
 
# Clear old journal logs
journalctl --vacuum-time=7d
 
# Clear package cache
apt clean         # Debian/Ubuntu
yum clean all     # RHEL/CentOS