Modern QA2026Структура каталогов Linux
Join

Course19 Linux & Command Line

Foundations · Chapter 19

Структура каталогов 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 -

Практическое упражнение

  1. Откройте терминал и перейдите в /var/log/. Просмотрите файлы и определите, какие логи принадлежат каким сервисам.
  2. Найдите все файлы .log, изменённые за последние 24 часа, в любом месте системы.
  3. Проверьте использование диска на вашей машине. Какой каталог самый большой?
  4. Перейдите в домашний каталог и изучите, какие конфигурационные файлы (dotfiles) существуют.
  5. Создайте структуру каталогов: ~/qa-practice/tests/unit/, ~/qa-practice/tests/integration/, ~/qa-practice/tests/e2e/
  6. Используйте tail -f для мониторинга лог-файла в реальном времени, одновременно выполняя действие, генерирующее записи в логе.