Linux для разработчика: система, сеть и диагностика
Практический Linux для разработчика: файловая система, процессы, права, сеть, диагностика, shell-автоматизация и безопасная эксплуатация приложений.
Материалы раздела
- Потоки stdin, stdout и stderr: как команды обмениваются данными — Программа в терминале обычно получает данные из стандартного ввода и отдаёт два независимых потока: обычный результат в stdout, а диагностику в stderr.
- Конвейеры shell: соединяем команды через pipe — Конвейер передаёт stdout одной команды в stdin следующей. Благодаря этому данные не приходится сохранять во временный файл после каждого шага: одна программа выбирает строки,…
- Перенаправление и tee: сохраняем вывод без потери диагностики — Перенаправление меняет, откуда процесс читает и куда пишет, ещё до его запуска. Оно позволяет сохранить отчёт, отделить диагностику, подать файл как stdin или одновременно видеть…
- Кавычки, подстановки и glob: как shell разбирает команду — Shell сначала разбирает командную строку, выполняет подстановки и только затем запускает программу с готовым массивом аргументов.
- Переменные окружения и PATH: откуда shell берёт настройки и команды — Переменные shell хранят состояние текущего интерпретатора, а экспортированные переменные образуют окружение дочернего процесса.
- Поиск файлов через find: условия, действия и безопасное удаление — Утилита find обходит дерево каталогов и проверяет каждый путь по заданным условиям. В отличие от поиска по заранее построенному индексу она видит текущее состояние файловой…
- Поиск текста через grep и rg: фильтры, обход и коды возврата — Поиск по проекту — это не только совпадение строки. Нужно выбрать корректный режим регулярного выражения, понять область обхода, не потерять скрытые файлы и отличить «ничего не…
- Права доступа chmod: чтение, запись, выполнение и umask — Права Linux отвечают не на вопрос «кто знает путь», а на вопрос «какую операцию ядро разрешит конкретному процессу».
- Пользователи, группы и sudo: кому разрешена операция — Linux связывает процесс с идентификаторами пользователя и групп. Файловые права, сигналы, сокеты и запуск service проверяются относительно этих идентификаторов, а не относительно…
- Процессы Linux: PID, ps, top и дерево запуска — Процесс — запущенный экземпляр программы со своим PID, памятью, открытыми файлами, identity и связью с родителем.
- Сигналы и завершение процессов: TERM, KILL и корректная остановка — Сигнал — асинхронное уведомление процессу от ядра или другого процесса. Он может попросить приложение перечитать конфигурацию, остановиться, продолжить работу или завершиться.
- Фоновые задачи: jobs, fg, bg и nohup — Job control — функция интерактивного shell, которая объединяет процессы pipeline в задания и позволяет переключать их между foreground, background и stopped состояниями.
- Пакетный менеджер APT: установка, обновление и проверка источника — APT разрешает зависимости и устанавливает пакеты из настроенных репозиториев Debian/Ubuntu. Надёжная работа начинается не с команды install, а с понимания источника,…
- Архивы и сжатие: tar, gzip и zip без потери структуры — Архив объединяет дерево файлов и метаданные, а сжатие уменьшает поток байтов. tar решает первую задачу, gzip — вторую; формат ZIP обычно сочетает каталог архива и сжатые элементы.
- Контрольные суммы: sha256sum и проверка скачанного файла — Криптографическая контрольная сумма превращает байты файла в короткий digest. Изменение содержимого почти наверняка меняет SHA-256, поэтому сумма обнаруживает повреждение и…
- SSH-ключи и known_hosts: безопасное подключение к серверу — SSH одновременно решает две разные задачи доверия: сервер доказывает клиенту свою identity через host key, а пользователь — серверу через пароль, public key или другой…
- SSH config и туннели: короткие подключения и port forwarding — Файл SSH config превращает длинный набор параметров в проверяемый профиль подключения. Туннель затем использует то же защищённое соединение, чтобы передать TCP-трафик между…
- Передача файлов через scp и rsync — scp копирует заданные пути через SSH, а rsync синхронизирует деревья и умеет передавать только различия. Главный риск rsync — не сеть, а неверная интерпретация source,…
- HTTP из терминала: curl, заголовки, тело и коды ответа — curl помогает разделить сетевое соединение, TLS, HTTP-status, headers и response body. По умолчанию HTTP 404 не делает сам curl неуспешным, поэтому надёжная проверка API должна…
- DNS-диагностика: getent, dig и путь имени до адреса — DNS сопоставляет имена с записями, но приложение в Linux может использовать более широкий Name Service Switch: локальный hosts, DNS, mDNS или корпоративный provider.
- Порты и сокеты: ss и lsof для поиска слушающего процесса — TCP-порт — число внутри сетевого namespace, а socket — объект ядра с локальным и удалённым endpoint и состоянием.
- Диск и inode: df, du и поиск причины ENOSPC — Ошибка No space left on device (ENOSPC) возникает не только при исчерпании блоков: файловая система может закончить inode, а процесс — удерживать уже удалённый большой файл и не…
- Логи и journalctl: фильтрация событий по сервису и времени — systemd journal хранит структурированные записи: сообщение дополняется unit, PID, priority, boot и другими полями.
- systemd-сервисы: unit, status, restart и зависимости — Systemd unit описывает, как запускать процесс, какие зависимости учитывать и что считать успешным состоянием. Команда systemctl управляет unit через manager; ручной запуск того…
- Диагностика недоступного сервиса: от DNS до процесса и логов — Фраза «сайт не работает» объединяет разные сбои: имя не разрешается, TCP недоступен, TLS не подтверждён, proxy возвращает ошибку, процесс упал или dependency отвечает медленно.