Технологии 519 просмотров

Linux Survival Guide: шпаргалка для системного администратора и разработчика

Практическое руководство по Linux: навигация, APT, systemd, сеть, SSH, фаервол, права, логи, cron и Podman — с объяснением зачем это нужно.

Linux Survival Guide: шпаргалка для системного администратора и разработчика

Linux — это операционная система, на которой держится весь современный интернет. От небольших личных блогов до гигантских облачных платформ — всё работает на Linux. Однако сила этой системы заключается в её гибкости, а слабость (для новичков) — в отсутствии графического интерфейса «из коробки» на серверах.

Эта шпаргалка создана не просто как список команд, а как практическое руководство. Мы разберём, почему используются те или иные инструменты, как они упростят жизнь админа и зачем вам стоит их освоить прямо сейчас.


Прежде чем настраивать сложные сервисы, нужно научиться уверенно перемещаться по файловой системе. В отличие от Windows, где вы кликаете по папкам мышкой, в Linux вы «ходите» по директориям с помощью команд. Понимание абсолютных и относительных путей — это база, без которой невозможна ни одна настройка сервера.

Ключевые команды

  • pwd — показать текущий путь (чтобы не потеряться).
  • ls -lah — вывести список файлов с правами доступа и размерами в человекочитаемом виде.
  • cd /var/www — перейти в каталог сайта.
  • cd .. — вернуться на уровень вверх.
  • touch file.txt — быстро создать пустой файл.
  • mkdir -p project/src — создать структуру папок одной командой.
  • cp config.ini config.bak — сделать резервную копию перед правками (золотое правило!).
  • rm -rf folder/ — удалить папку рекурсивно (использовать с осторожностью!).

2. Как получать помощь в терминале?

Многие боятся Linux, думая, что нужно помнить тысячи флагов. На самом деле вся документация уже установлена в вашей системе. Умение быстро найти справку экономит часы гугления. Вместо того чтобы искать ответ в интернете, часто быстрее спросить у самой системы.

Инструменты самопомощи

command --help       # Быстрая справка по флагам команды
man command          # Полное руководство (manual)
apropos keyword      # Поиск команд по ключевому слову (если забыли название)
whatis ls            # Краткое описание команды в одну строку

Совет: в режиме man нажмите /, чтобы искать текст внутри страницы, и q, чтобы выйти.


3. Просмотр и редактирование конфигураций

На сервере нет текстового редактора с кнопками «Сохранить» и «Закрыть». Вам придётся работать с консольными редакторами. Кроме того, админу часто нужно не менять файл, а просто быстро глянуть его содержимое или проверить логи на наличие ошибок. Для разных задач существуют разные утилиты.

Чем смотреть и править

  • cat file.txt — вывести всё содержимое файла на экран (для маленьких файлов).
  • less large.log — удобный просмотр больших файлов с прокруткой.
  • tail -f /var/log/syslog — следить за логом в реальном времени (обновляется автоматически).
  • Nano — простой редактор для новичков (Ctrl+O сохранить, Ctrl+X выйти).
  • Vim — мощный редактор для профи. Требует изучения режимов, но невероятно эффективен.

4. Анализ данных: grep и awk

Серверные логи могут занимать гигабайты текста. Читать их глазами невозможно. Здесь на помощь приходят утилиты фильтрации. Они позволяют вычленить из огромного потока данных только то, что важно: ошибки, конкретные IP-адреса или статистику запросов. Это главный инструмент расследования инцидентов.

Примеры фильтрации

grep "error" app.log             # Найти все строки со словом error
grep -i "warning" sys.log        # Искать без учёта регистра букв
grep -v "debug" app.log          # Показать всё, КРОМЕ строк с debug
awk '{print $1}' access.log      # Вывести только первый столбец (например, IP)
df -h | awk '{print $5}'         # Получить процент занятого места на дисках

5. Структура файловой системы Linux

В Windows программы разбросаны по разным папкам (Program Files, AppData, Windows). В Linux существует строгий стандарт FHS (Filesystem Hierarchy Standard). Знание этой структуры помогает мгновенно находить конфиги, логи и исполняемые файлы, независимо от дистрибутива.

КаталогНазначениеПочему это важно
/etcКонфигурацияЗдесь лежат настройки всех сервисов (nginx, ssh, mysql)
/varПеременные данныеЛоги, базы данных, кэши, почта
/usrПрограммыБинарные файлы приложений и библиотеки
/homeПользователиЛичные данные пользователей
/tmpВременные файлыОчищаются при перезагрузке, полезно для тестов

6. Управление пакетами (APT)

Установка программ через .exe файлы в Linux — плохая практика. Для этого существуют менеджеры пакетов. Они не только скачивают программу, но и разрешают все зависимости, проверяют цифровые подписи и позволяют легко обновлять всю систему одной командой. Это гарантирует стабильность и безопасность ПО.

Основные команды APT (Debian/Ubuntu)

sudo apt update                 # Обновить списки доступных пакетов
sudo apt upgrade                # Обновить установленные программы
sudo apt install nginx          # Установить пакет
sudo apt remove nginx           # Удалить пакет (конфиги останутся)
sudo apt purge nginx            # Удалить пакет полностью (с конфигами)
sudo apt autoremove             # Удалить ненужные зависимости

7. Мониторинг ресурсов и процессов

«Сервер тормозит» — самая частая жалоба. Чтобы понять причину, нужно знать, какой процесс съедает память или процессор. Стандартные утилиты мониторинга позволяют увидеть картину в реальном времени и принять решение: убить зависший процесс, добавить памяти или оптимизировать код.

Диагностика производительности

  • htop — интерактивный диспетчер задач (удобнее, чем top).
  • free -h — проверка свободной оперативной памяти.
  • df -h — проверка свободного места на диске.
  • ps aux | grep python — поиск конкретных процессов.
  • kill 1234 — корректная остановка процесса по PID.
  • kill -9 1234 — принудительное завершение (если процесс не отвечает).

8. Systemd: управление службами

Раньше для запуска программ при старте системы использовались сложные скрипты. Сейчас стандартом является systemd. Он управляет демонами (фоновыми службами), отслеживает их состояние, перезапускает при сбоях и собирает логи в единый журнал. Понимание systemctl обязательно для любого современного админа.

Управление сервисами

sudo systemctl start nginx     # Запустить веб-сервер
sudo systemctl stop nginx      # Остановить
sudo systemctl restart php-fpm # Перезагрузить после правки конфига
sudo systemctl enable docker   # Добавить в автозагрузку
systemctl status mysql         # Проверить статус и последние ошибки
journalctl -u nginx -n 50      # Посмотреть последние 50 строк логов службы

9. Сеть и безопасный удалённый доступ

SSH — это дверь в ваш сервер. Если оставить её открытой и незапертой (стандартный порт 22 и вход по паролю), боты подберут доступ за считанные минуты. Настройка сети включает не только проверку соединения, но и «закаливание» SSH: смену порта, отказ от паролей в пользу ключей и настройку фаервола.

Диагностика и защита

ip a                             # Узнать свой IP-адрес
ss -tulnp                        # Посмотреть открытые порты
ping ya.ru                       # Проверить связь с интернетом
curl -I https://google.com       # Проверить заголовки ответа сервера

Важно: всегда меняйте PermitRootLogin no и PasswordAuthentication no в /etc/ssh/sshd_config.


10. Фаервол и защита от перебора паролей

Даже если вы закрыли SSH, сканеры портов будут постоянно стучаться в ваши сервисы. UFW (Uncomplicated Firewall) позволяет легко открыть только нужные порты (80, 443), заблокировав всё остальное. А Fail2ban анализирует логи и автоматически добавляет в чёрный список IP-адреса, которые слишком часто ошибаются при вводе пароля.

Настройка безопасности

sudo ufw enable                 # Включить фаервол
sudo ufw allow 80/tcp           # Разрешить HTTP
sudo ufw deny from 10.0.0.5     # Забанить подозрительный IP
sudo apt install fail2ban       # Установить защиту от брута

11. Права доступа: chmod и chown

В Linux каждый файл принадлежит пользователю и группе. Если вы загрузили сайт на сервер, но забыли назначить владельцем веб-сервер (www-data), сайт не сможет читать файлы или писать в кэш. Ошибки прав доступа — одна из самых частых причин проблем с работой веб-приложений.

Управление правами

  • chmod 755 script.sh — дать права на выполнение скрипта.
  • chown www-data:www-data /var/www/html — назначить владельца папки сайта.
  • chmod +x deploy.sh — сделать файл исполняемым.
  • sudo adduser developer — создать нового пользователя.
  • sudo usermod -aG sudo developer — дать права администратора.

12. Работа с логами и расследование инцидентов

Когда что-то ломается, сервер молчит, но он «говорит» через логи. Умение читать логи — это суперсила админа. Вместо того чтобы гадать, почему сайт лежит, вы открываете лог ошибок Nginx или системный журнал и видите точную причину: нехватка памяти, ошибка в коде или атака.

Где искать ответы

  • /var/log/syslog — общие системные события.
  • /var/log/auth.log — кто пытался войти в систему.
  • /var/log/nginx/error.log — ошибки веб-сервера.
  • journalctl -p err --since today — показать все критические ошибки за сегодня.
  • tail -f /opt/app/logs/output.log — следить за логом приложения в реальном времени.

13. Автоматизация: Cron и Bash-скрипты

Человек склонен забывать. Можно забыть сделать бэкап, забыть очистить старые логи или забыть перезапустить службу после обновления. Cron — это будильник для вашего сервера. Он выполняет задачи строго по расписанию. Bash-скрипты же позволяют объединить несколько команд в один сценарий, чтобы не вводить их вручную каждый раз.

Пример автоматизации

Создайте скрипт backup.sh:

#!/bin/bash
# Создаём архив с датой в имени
tar -czf /backups/site_$(date +%F).tar.gz /var/www/html
echo "Бэкап успешно создан"

Добавьте в Cron (crontab -e):

0 2 * * * /root/scripts/backup.sh     # Запускать каждый день в 2 ночи
*/10 * * * * /usr/bin/check_health.sh # Проверять здоровье каждые 10 минут

14. Контейнеризация: Podman

Традиционные виртуальные машины тяжелы и медленны. Контейнеры изолируют приложение вместе с его библиотеками, но используют ядро хоста, что делает их лёгкими и быстрыми. Podman — это современная альтернатива Docker. Он безопаснее, так как может работать без прав root, и проще в интеграции с systemd. Это стандарт для развёртывания современных приложений.

Базовые команды Podman

podman run -d --name my-app -p 3000:3000 node:18 # Запустить контейнер
podman ps                                          # Список работающих контейнеров
podman exec -it my-app sh                          # Зайти внутрь контейнера
podman logs my-app                                 # Посмотреть логи приложения
podman build -t my-image .                         # Собрать свой образ

Заключение

Linux перестаёт быть страшным, когда вы понимаете логику его работы. Это не набор хаотичных команд, а стройная система, где всё связано: права доступа влияют на работу сайтов, логи помогают чинить ошибки, а автоматизация освобождает ваше время для более важных задач.

Используйте эту шпаргалку как опорную точку. Со временем большинство команд войдут в привычку, и вы сможете управлять сервером с закрытыми глазами. Удачного администрирования!

Комментарии

Комментарии появляются после модерации.

Опубликованных комментариев пока нет. Будьте первым.

Написать в Telegram
Cookies Этот сайт использует файлы cookie для улучшения работы сервиса и аналитики. Продолжая использование сайта, вы соглашаетесь с обработкой данных.