Структура каталогов Linux
Updated Jul 2026
Иерархия файловой системы
Linux организует всё как файлы в единое дерево каталогов, начинающееся от корня /. Понимание этой структуры помогает ориентироваться в тестовых окружениях, находить конфигурационные файлы и быстро определять местоположение логов.
/ Корень файловой системы
├── home/user/ Ваш домашний каталог (~)
├── etc/ Конфигурационные файлы
├── var/
│ ├── log/ Логи приложений и системы
│ └── lib/ Переменные данные (базы данных, пакеты)
├── tmp/ Временные файлы (очищаются при перезагрузке)
├── opt/ Опциональное/стороннее программное обеспечение
├── usr/
│ ├── bin/ Пользовательские исполняемые файлы
│ └── local/ Локально скомпилированное ПО
├── proc/ Виртуальная файловая система (информация о процессах и ядре)
├── dev/ Файлы устройств
└── srv/ Данные сервисов (веб-серверы, FTP)
Каталоги, которые QA-инженеры используют чаще всего
/home/user/ (Ваш домашний каталог, ~)
Это ваше рабочее пространство. Здесь хранятся ваши скрипты, конфигурации тестов, SSH-ключи и настройки оболочки.
# Перейти в домашний каталог
cd ~
# Или просто:
cd
# Типичные QA-файлы в домашнем каталоге
~/.ssh/config # Настройки SSH-соединений
~/.bashrc # Настройка оболочки (алиасы, PATH)
~/.npmrc # Конфигурация npm
~/.env # Персональные переменные окружения (не коммитятся)
~/projects/ # Ваши клонированные репозитории
/var/log/ (Логи)
Здесь вы расследуете сбои. Логи приложений, системные логи и логи веб-серверов хранятся здесь.
# Типичные расположения логов
/var/log/syslog # Системные сообщения
/var/log/auth.log # События аутентификации
/var/log/nginx/access.log # Логи доступа Nginx
/var/log/nginx/error.log # Логи ошибок Nginx
/var/log/app/application.log # Логи приложения
/var/log/postgresql/postgresql.log # Логи базы данных
/etc/ (Конфигурация)
Конфигурационные файлы для системных служб и приложений. Когда тесты падают из-за неправильной конфигурации, именно сюда вы смотрите.
# Типичные конфигурационные файлы
/etc/hosts # Переопределения DNS (полезно для тестовых окружений)
/etc/nginx/nginx.conf # Конфигурация веб-сервера Nginx
/etc/environment # Системные переменные окружения
/etc/postgresql/pg_hba.conf # Контроль доступа PostgreSQL
/etc/ssl/certs/ # SSL-сертификаты
/tmp/ (Временные файлы)
Временные данные, которые очищаются при перезагрузке. Полезно для промежуточных тестовых данных или хранения промежуточных результатов.
# Используйте /tmp для временных тестовых данных
cp test-data.json /tmp/
# Запускайте тесты, использующие /tmp/test-data.json
# При перезагрузке файл автоматически удаляется
/proc/ (Виртуальная файловая система)
Это не реальные файлы -- это окно в ядро и запущенные процессы. Полезно для отладки.
# Проверить системную память
cat /proc/meminfo | head -5
# Проверить информацию о процессоре
cat /proc/cpuinfo | grep "model name" | head -1
# Проверить конкретный процесс
cat /proc/1234/status | grep -E "(Name|State|VmRSS)"
Навигация по файловой системе
Базовые команды навигации
# Вывести текущий каталог
pwd
# Список файлов (базовый)
ls
# Список файлов с подробностями (права, размер, дата)
ls -la
# Список файлов, отсортированных по времени изменения (новейшие первыми)
ls -lt
# Список файлов с человекочитаемыми размерами
ls -lh
# Сменить каталог
cd /var/log
cd .. # На один уровень вверх
cd - # В предыдущий каталог
cd ~/projects # В каталог projects в домашнем каталоге
Поиск файлов
# Найти файл по имени (рекурсивный поиск)
find / -name "playwright.config.ts" 2>/dev/null
# Найти файлы, изменённые за последние 24 часа
find /var/log -mtime -1 -type f
# Найти файлы больше 100МБ (поиск проблем с дисковым пространством)
find / -size +100M -type f 2>/dev/null
# Найти все файлы .spec.ts в проекте
find ~/projects/webapp -name "*.spec.ts" -type f
# Более быстрая альтернатива: locate (использует предварительно построенный индекс)
locate playwright.config.ts
Использование диска
# Сводка использования диска
df -h
# Размер каталога
du -sh /var/log/
# Топ-10 крупнейших каталогов
du -h /var/log/ | sort -rh | head -10
# Проверить, заполнен ли диск (частая причина сбоев тестов)
df -h | grep -E "9[0-9]%|100%"
Операции с файлами
# Создание каталогов (включая родительские)
mkdir -p tests/integration/api
# Копирование файлов
cp source.json destination.json
cp -r tests/ tests-backup/ # Рекурсивное копирование
# Перемещение/переименование файлов
mv old-name.ts new-name.ts
mv test-results/ archive/test-results-sprint23/
# Удаление файлов
rm unwanted-file.txt
rm -r old-directory/ # Рекурсивное удаление
rm -rf node_modules/ # Принудительное рекурсивное удаление (используйте осторожно!)
# Создание пустого файла
touch new-test.spec.ts
# Просмотр содержимого файла
cat small-file.txt # Весь файл
head -20 large-file.log # Первые 20 строк
tail -50 large-file.log # Последние 50 строк
tail -f /var/log/app.log # Мониторинг файла в реальном времени (отслеживание логов)
less large-file.log # Постраничный просмотр (нажмите q для выхода)
Понимание путей
Абсолютные и относительные пути
# Абсолютный путь: начинается от корня (/)
/home/qa/projects/webapp/tests/login.spec.ts
# Относительный путь: относительно текущего каталога
tests/login.spec.ts # Если вы в /home/qa/projects/webapp/
../webapp/tests/login.spec.ts # Если вы в /home/qa/projects/api/
Специальные символы путей
| Символ | Значение | Пример |
|---|---|---|
/ |
Корневой каталог | cd / |
~ |
Домашний каталог | cd ~/projects |
. |
Текущий каталог | cp ./config.json /tmp/ |
.. |
Родительский каталог | cd .. |
- |
Предыдущий каталог | cd - |
Практическое упражнение
- Откройте терминал и перейдите в
/var/log/. Просмотрите файлы и определите, какие логи принадлежат каким сервисам. - Найдите все файлы
.log, изменённые за последние 24 часа, в любом месте системы. - Проверьте использование диска на вашей машине. Какой каталог самый большой?
- Перейдите в домашний каталог и изучите, какие конфигурационные файлы (dotfiles) существуют.
- Создайте структуру каталогов:
~/qa-practice/tests/unit/,~/qa-practice/tests/integration/,~/qa-practice/tests/e2e/ - Используйте
tail -fдля мониторинга лог-файла в реальном времени, одновременно выполняя действие, генерирующее записи в логе.