Часть 1: Установка и настройка
1. Установка Git на Linux
bash
# Для Ubuntu/Debian sudo apt update sudo apt install git -y # Для CentOS/RHEL sudo yum install git -y # Проверка установки git --version
2. Настройка Git (первая настройка)
bash
# Установка имени пользователя и email git config --global user.name "Ваше Имя" git config --global user.email "ваш.email@example.com" # Настройка редактора по умолчанию (nano проще для новичка) git config --global core.editor "nano" # Просмотр всех настроек git config --list
3. Создание SSH-ключа для GitHub
bash
# Генерация SSH-ключа ssh-keygen -t ed25519 -C "ваш.email@example.com" # Нажимайте Enter на всех вопросах (можно без пароля) # Просмотр публичного ключа cat ~/.ssh/id_ed25519.pub
4. Добавление ключа в GitHub
- Зайдите на GitHub → Settings → SSH and GPG keys
- Нажмите «New SSH key»
- Вставьте содержимое файла
~/.ssh/id_ed25519.pub - Проверьте подключение:
bash
ssh -T git@github.com
Часть 2: Основы Git
5. Создание репозитория
bash
# Способ 1: Локальный репозиторий mkdir my-notes cd my-notes git init # Способ 2: Клонирование существующего git clone https://github.com/username/repository.git git clone git@github.com:username/repository.git # через SSH
6. Базовый рабочий процесс
bash
# Создаем файл echo "# Мои заметки по Linux" > README.md # Проверяем статус git status # Добавляем файл в staging area git add README.md # Или все файлы git add . # Фиксируем изменения (коммит) git commit -m "Добавлен README файл" # Отправляем на GitHub git push origin main
7. Полезные команды для ежедневного использования
bash
# Просмотр истории коммитов git log --oneline git log --graph --pretty=format:'%C(yellow)%h%Creset -%C(red)%d%Creset %s %C(green)(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit # Просмотр изменений до коммита git diff # Отмена изменений в файле (до git add) git checkout -- имя_файла # Удаление файла из отслеживания git rm --cached имя_файла
Часть 3: Работа с Markdown файлами
Пример файла linux-commands.md:
markdown
# Заметки Linux-администратора ## Основные команды ### Мониторинг системы ```bash # Просмотр загрузки CPU top htop # Просмотр использования диска df -h du -sh * # Мониторинг памяти free -h
Сетевые команды
bash
# Проверка сети ip a ping -c 4 google.com # Просмотр открытых портов ss -tulpn
Полезные скрипты
Бэкап директории
bash
#!/bin/bash # backup.sh BACKUP_DIR="/backups" SOURCE_DIR="/var/www" DATE=$(date +%Y-%m-%d_%H-%M) tar -czf "$BACKUP_DIR/backup_$DATE.tar.gz" "$SOURCE_DIR" echo "Бэкап создан: backup_$DATE.tar.gz"
text
--- ## Часть 4: Сложные операции ### 8. Работа с ветками (branches) ```bash # Создание ветки git branch feature/new-script git checkout feature/new-script # Или одной командой git checkout -b feature/new-script # Переключение между ветками git checkout main git checkout feature/new-script # Слияние веток git checkout main git merge feature/new-script # Удаление ветки git branch -d feature/new-script # локально git push origin --delete feature/new-script # удаленно
9. Разрешение конфликтов слияния
bash
# Шаг 1: Попытка слияния git merge feature/new-script # Если конфликт, Git покажет: # CONFLICT (content): Merge conflict in filename # Шаг 2: Просмотр конфликтных файлов git status # Шаг 3: Редактирование файлов # Git помечает конфликтные участки: <<<<<<< HEAD Текст из текущей ветки ======= Текст из сливаемой ветки >>>>>>> feature/new-script # Шаг 4: После исправления git add имя_файла git commit -m "Разрешен конфликт слияния"
10. Пример сложного слияния
bash
# Ситуация: нужно добавить новый скрипт, но main изменился # 1. Начинаем с чистой копии git checkout main git pull origin main # 2. Создаем новую ветку git checkout -b feature/backup-script # 3. Добавляем скрипт backup.sh cat > backup.sh << 'EOF' #!/bin/bash # Автоматический бэкап BACKUP_SRC="/etc" BACKUP_DEST="/backups" tar -czf "$BACKUP_DEST/backup_$(date +%Y%m%d).tar.gz" "$BACKUP_SRC" EOF git add backup.sh git commit -m "Добавлен скрипт бэкапа" # 4. Тем временем кто-то обновил main # Нужно обновить нашу ветку git checkout main git pull origin main git checkout feature/backup-script git merge main # или git rebase main # 5. Если конфликт - разрешаем, затем git add . git commit -m "Слияние с основной веткой" # 6. Публикуем изменения git push origin feature/backup-script # 7. Создаем Pull Request на GitHub
11. Отмена изменений
bash
# Отмена последнего коммита (сохраняет изменения) git reset --soft HEAD~1 # Полная отмена последнего коммита git reset --hard HEAD~1 # Отмена изменений в конкретном файле git checkout -- имя_файла # Отмена уже отправленного коммита (осторожно!) git revert HEAD git push origin main
Часть 5: Продвинутые практики для DevOps/SRE
12. .gitignore файл для Linux-администратора
text
# Игнорировать временные файлы *.tmp *.log *.swp # Игнорировать логи logs/ *.log # Игнорировать конфиденциальные данные *.pem *.key secrets/ .env # Игнорировать бэкапы *.bak backup_*.tar.gz # Игнорировать системные файлы .DS_Store Thumbs.db
13. Работа с тегами (версионирование)
bash
# Создание тега git tag v1.0.0 git tag -a v1.1.0 -m "Версия с новыми скриптами" # Публикация тегов git push origin v1.0.0 git push origin --tags # Просмотр тегов git tag git show v1.0.0
14. Полезные алиасы для .gitconfig
bash
# Добавьте в ~/.gitconfig
[alias]
co = checkout
ci = commit
st = status
br = branch
hist = log --pretty=format:\"%C(yellow)%h%Creset %ad | %C(green)%s%Creset %C(red)[%an]%Creset %C(blue)%d%Creset\" --date=short --graph
last = log -1 HEAD
undo = reset HEAD~1
diffc = diff --cached
Часть 6: Практический пример — Дневник администратора
Структура репозитория:
text
linux-admin-journal/
├── README.md
├── daily-notes/
│ ├── 2024-01-15.md
│ ├── 2024-01-16.md
│ └── template.md
├── scripts/
│ ├── backup/
│ ├── monitoring/
│ └── utils/
├── configs/
│ ├── nginx/
│ ├── ssh/
│ └── firewall/
└── knowledge-base/
├── troubleshooting.md
├── useful-commands.md
└── best-practices.md
Пример ежедневной заметки:
markdown
# 2024-01-15 - Работа с серверами ## Выполненные задачи - [x] Настройка автоматического бэкапа - [x] Обновление пакетов на production серверах - [ ] Мониторинг дискового пространства ## Проблемы и решения **Проблема**: Сервер db01 перегружен **Решение**: Добавил swap файл и оптимизировал запросы ```bash # Создание swap fallocate -l 2G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile
Новые команды
bash
# Просмотр использования inodes df -i # Мониторинг в реальном времени watch -n 1 'df -h'
Задачи на завтра
- Настроить алерты дискового пространства
- Протестировать новый скрипт бэкапа
text
--- ## Часть 7: Промт для ИИ по DevOps/SRE росту
Мне нужен детальный план развития от Junior Linux Administrator до Senior DevOps/SRE Engineer. Учти следующее:
Текущий статус:
- Базовые знания Linux (администрирование, Bash-скрипты)
- Понимание Git/GitHub на уровне ежедневного использования
- Опыт работы с серверами, мониторингом, бэкапами
Требуемый результат через 12-18 месяцев:
- Уверенные навыки в CI/CD (GitLab CI, Jenkins, GitHub Actions)
- Контейнеризация (Docker, Docker Compose)
- Оркестрация (Kubernetes basics)
- Инфраструктура как код (Terraform, Ansible)
- Мониторинг и логирование (Prometheus, Grafana, ELK)
- Основы облачных платформ (AWS/GCP/Azure)
Ограничения:
- 10-15 часов в неделю на обучение
- Доступ к домашней лаборатории (2-3 VPS)
- Бюджет на курсы: средний
- Предпочтение практическим проектам
Создай пошаговый план обучения с:
- Конкретными темами по месяцам
- Практическими проектами для каждого этапа
- Критериями проверки знаний
- Рекомендациями по сертификациям
- Ресурсами (бесплатные/платные курсы, книги, документация)
- Требованиями к домашней лаборатории на каждом этапе
- Метриками прогресса
- Советами по поиску ментора/комьюнити
Формат: Табличный план + детальное описание каждого этапа + чек-листы для самопроверки.
text
--- ## Бонус: Быстрый чек-лист для ежедневной работы ```bash # Ежедневный рабочий процесс 1. git pull origin main # Обновить локальную копию 2. git checkout -b feature/name # Создать ветку для задачи 3. # Работа с файлами... # Вноси изменения 4. git add . # Добавить изменения 5. git commit -m "Описание" # Закоммитить 6. git push origin feature/name # Отправить на GitHub 7. # Создать Pull Request на GitHub 8. После слияния: git checkout main && git pull
Советы для новичков:
- Делайте маленькие коммиты — одна задача = один коммит
- Пишите понятные сообщения коммитов на русском/английском
- Чаще делайте push чтобы не потерять работу
- Используйте .gitignore для временных файлов
- Сначала pull, потом push — избегайте конфликтов
- Ветки — ваш друг — работайте в отдельных ветках
Начните с простого: ведите дневник в Markdown, храните полезные скрипты. По мере роста навыков добавляйте автоматизацию, CI/CD, инфраструктуру как код. Удачи в обучении! 🚀