Модуль обучения | BAZA DevOps Path
Назад к Roadmap
Прогресс модуля
0%

Linux Basics

45 минут
Уровень: Начальный

???? Лекция: Основы Linux

Linux — это свободная операционная система на основе UNIX, которая лежит в основе большинства серверов в мире. Для DevOps-инженера знание Linux — это фундамент профессии.

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

В отличие от Windows, Linux использует единое дерево каталогов, начинающееся с корня /. Основные директории:

  • /home — домашние каталоги пользователей
  • /etc — конфигурационные файлы системы
  • /var — изменяемые данные (логи, кэш)
  • /usr — пользовательские программы
  • /bin — основные системные команды
Важно
В Linux всё является файлом: устройства, процессы, даже сетевые сокеты. Это фундаментальный принцип Unix-философии.

Основные команды навигации

Bash
# Показать текущую директорию
pwd

# Перейти в домашнюю директорию
cd ~

# Перейти в папку
cd /var/log

# Вернуться на уровень выше
cd ..

# Показать содержимое директории
ls -la

# Создать директорию
mkdir my_project

# Удалить файл
rm file.txt

# Удалить директорию рекурсивно
rm -rf directory/

Работа с файлами

Bash
# Создать файл
touch newfile.txt

# Посмотреть содержимое
cat file.txt

# Редактировать файл
nano file.txt

# Копировать файл
cp source.txt destination.txt

# Переместить/переименовать
mv oldname.txt newname.txt

# Найти файл
find /home -name "*.log"
Лайфхак
Используйте Tab для автодополнения команд и путей. Это сэкономит вам много времени!

Права доступа

Linux использует систему прав доступа для защиты файлов. Каждый файл имеет владельца и группу, а также права на чтение (r), запись (w) и выполнение (x).

Bash
# Посмотреть права
ls -l file.txt
# -rw-r--r-- 1 user group 1024 Dec 01 18:00 file.txt

# Изменить права (числовой формат)
chmod 755 script.sh  # rwxr-xr-x

# Изменить права (символьный формат)
chmod +x script.sh   # добавить право на выполнение

# Изменить владельца
chown user:group file.txt

????️ Практические задания

Задание 1
Легкий

Создание структуры проекта

Создайте файловую структуру для веб-проекта с использованием командной строки.

  1. Создайте директорию web_project и перейдите в неё
  2. Создайте поддиректории: src, tests, docs
  3. В директории src создайте файлы index.html и style.css
  4. Создайте файл README.md в корне проекта
  5. Проверьте структуру командой tree или ls -R
Ожидаемый результат
web_project/
├── README.md
├── docs/
├── src/
│   ├── index.html
│   └── style.css
└── tests/
Задание 2
Средний

Работа с правами доступа

Настройте правильные права доступа для скриптов и конфигурационных файлов.

  1. Создайте скрипт backup.sh с любым содержимым
  2. Дайте скрипту права на выполнение (755)
  3. Создайте файл config.conf с конфиденциальными данными
  4. Установите права 600 для config.conf (только владелец может читать/писать)
  5. Проверьте права командой ls -l
Решение
touch backup.sh
chmod 755 backup.sh

touch config.conf
chmod 600 config.conf

ls -l
# -rwxr-xr-x backup.sh
# -rw------- config.conf

???? Реальный кейс из практики

Кейс: Автоматизация бэкапов в production

Задача

В компании "TechStartup" нужно было настроить автоматическое резервное копирование базы данных PostgreSQL на production-сервере. Бэкапы должны создаваться ежедневно в 3:00 ночи и храниться 30 дней.

Решение

Был создан bash-скрипт для автоматизации процесса:

backup_db.sh
#!/bin/bash

# Настройки
DB_NAME="production_db"
DB_USER="backup_user"
BACKUP_DIR="/var/backups/postgres"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz"

# Создание директории если не существует
mkdir -p $BACKUP_DIR

# Создание бэкапа
pg_dump -U $DB_USER $DB_NAME | gzip > $BACKUP_FILE

# Проверка успешности
if [ $? -eq 0 ]; then
    echo "Backup успешно создан: $BACKUP_FILE"

    # Удаление бэкапов старше 30 дней
    find $BACKUP_DIR -name "*.sql.gz" -mtime +30 -delete
    echo "Старые бэкапы удалены"
else
    echo "Ошибка создания бэкапа!" >&2
    exit 1
fi

Затем скрипт был добавлен в cron для автоматического запуска:

crontab -e
# Запуск бэкапа каждый день в 3:00
0 3 * * * /opt/scripts/backup_db.sh >> /var/log/backup.log 2>&1
Результат
  • ✓ Автоматические ежедневные бэкапы работают 2 года без сбоев
  • ✓ Сэкономили 90% дискового пространства благодаря gzip-сжатию
  • ✓ Успешно восстановили данные после инцидента в мае 2024
  • ✓ Скрипт адаптирован для 15 других проектов компании

Что вы узнали из этого кейса

  • Использование переменных в bash-скриптах
  • Работу с датами и форматированием
  • Создание директорий с проверкой существования
  • Pipe операторы для передачи данных между командами
  • Проверку кодов возврата и обработку ошибок
  • Автоматизацию с помощью cron
  • Логирование операций

✅ Проверочный Quiz

Вопрос 1 из 5
Какая команда используется для отображения текущей директории?
A
pwd
B
cd
C
ls
D
dir
Вопрос 2 из 5
Что означает команда chmod 755?
A
Только владелец может читать файл
B
Все пользователи имеют полные права
C
Владелец: rwx, Группа и Другие: r-x
D
Никто не может изменять файл
Вопрос 3 из 5
Какая директория содержит конфигурационные файлы системы?
A
/var
B
/etc
C
/home
D
/usr
Вопрос 4 из 5
Как удалить непустую директорию?
A
rm -rf directory/
B
rmdir directory/
C
delete directory/
D
rm directory/
Вопрос 5 из 5
Что делает оператор | (pipe) в Linux?
A
Объединяет два файла
B
Передает вывод одной команды на вход другой
C
Запускает команды параллельно
D
Создает резервную копию

Результаты теста

0/5
Made on
Tilda