Файловая система Linux
Куда что лежит: /etc, /var, /usr, /home, /opt. Почему всё — файл.
Всё — это файл
В Linux одинаковыми системными вызовами (open, read, write) можно
работать с:
- обычными файлами,
- директориями,
- блочными устройствами (диски:
/dev/sda), - символьными устройствами (
/dev/null,/dev/random), - сокетами и pipe-ами,
- даже информацией о ядре через
/procи/sys.
Удобно. Освоил работу с файлами, значит работаешь почти со всем в системе теми же инструментами.
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>.
Полезное на каждый день
pwd— где я сейчас.ls -la— показать всё, включая скрытые файлы, с правами.cd -— вернуться в предыдущую директорию.tree -L 2— наглядное дерево на 2 уровня (в минимальных образахtreeнет, ставится черезapt install tree/apk add tree).du -sh *— размеры всего в текущей директории.
Так 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 говорит с демоном.
Что важно запомнить
ls -la/ls -lA— содержимое каталога с правами.du -sh <путь>— суммарный размер каталога.cat /etc/os-release,df -h— что за система и сколько места.
Чек-лист
- Понимаешь чем
/etcотличается от/var. - Знаешь что
/proc— не реальная директория на диске, а виртуальная ФС. - Не пугаешься скрытых файлов с точкой в начале.
Прошли материал до конца? Отметьте урок пройденным.
Прогресс сохранён в этом браузере
Почистишь историю или откроешь с телефона, и отметки пропадут. Оставь почту, они переедут в аккаунт. Пароль придумывать не нужно.
Готово. теперь в аккаунте: прогресс виден с любого устройства. Мой прогресс