← Linux: основы
12 мин · просто · Урок 2 из 8

Файловая система Linux

Куда что лежит: /etc, /var, /usr, /home, /opt. Почему всё — файл.

Всё — это файл

В Linux одинаковыми системными вызовами (open, read, write) можно работать с:

Удобно. Освоил работу с файлами, значит работаешь почти со всем в системе теми же инструментами.

FHS — Filesystem Hierarchy Standard

Договорённость про то, где что лежит. Её соблюдают почти все дистрибутивы. Так выглядит корень / на типичном сервере:

/
├── bin -> usr/bin     # симлинк, исполняемые на каждый день
├── boot               # ядро + initramfs (на серверах редко трогаем)
├── dev                # устройства: /dev/sda, /dev/null, /dev/tty…
├── etc                # конфиги. nginx.conf, ssh/sshd_config, hosts
│   ├── nginx/
│   ├── ssh/
│   └── systemd/
├── home
│   └── deploy/        # домашка обычного пользователя
├── opt                # большие сторонние приложения (часто vendor)
├── proc               # виртуальная ФС: /proc/cpuinfo, /proc/<pid>/…
├── root               # домашка root-а (НЕ /home/root)
├── run                # рантайм-сокеты, pid-файлы (в tmpfs)
├── srv                # данные сервисов (часто пусто)
├── sys                # виртуальная ФС про железо и ядро
├── tmp                # временное. Обычно чистится при перезагрузке или по таймеру
├── usr
│   ├── bin/           # системные исполняемые
│   ├── local/         # софт, поставленный руками (вне пакетов)
│   └── sbin/          # админские исполняемые
└── var
    ├── cache/         # кеши пакетного менеджера и приложений
    ├── lib/           # данные сервисов: postgres, docker, …
    └── log/           # логи: syslog, nginx/, auth.log, journal/

Развёрнутая шпаргалка:

ПутьЧто там
/etcконфиги системного и серверного софта
/varпеременные данные: логи, кеши, спулы, базы данных
/var/logлоги (syslog, nginx, auth.log, …)
/usr/bin, /usr/sbinсистемные исполняемые файлы
/usr/localсофт, установленный руками, не через пакетный менеджер
/optсторонние большие приложения (часто vendor-ные)
/home/<user>домашка пользователя
/rootдомашка root-а
/tmpвременные файлы, чистится при перезагрузке (tmpfs) или по таймеру
/proc, /sysвиртуальные ФС с информацией о ядре и процессах
/devустройства

Если на сервере что-то "потерялось", смотри первым делом в /etc (конфиг) или /var/log (лог). Если речь про данные сервиса - /var/lib/<service>.

Полезное на каждый день

Так ls -la /etc показывает содержимое с правами и владельцем:

$ ls -la /etc
drwxr-xr-x 1 root root  4096 Jun 18 09:00 .
drwxr-xr-x 1 root root  4096 Jun 18 09:00 ..
-rw-r--r-- 1 root root  1842 May 30 11:20 hosts
-rw-r--r-- 1 root root   669 May 30 11:20 resolv.conf
drwxr-xr-x 1 root root  4096 Jun 18 09:00 ssh

Точка . — сама директория, .. — родительская. Флаг -A покажет то же, но без ./... А du -sh /var/log/* свяжет команду с FHS и покажет, какой лог раздулся:

$ du -sh /var/log/*
12M   /var/log/journal
3.1M  /var/log/nginx
512K  /var/log/auth.log

Сокеты сервисов тоже видны как файлы: например /run/docker.sock — это точка, через которую docker CLI говорит с демоном.

Что важно запомнить

Чек-лист

Прошли материал до конца? Отметьте урок пройденным.