Материалы по Linux: справочник и практикумы
Выберите материал по Linux: команды, Bash, права файлов, systemd и сеть. В каталоге — инструкции, упражнения с проверкой, тест и онлайн-инструменты.
Найдите свою задачу
Страницы сгруппированы по назначению. Справочник объясняет команду, инструкция решает конкретную задачу, а практика позволяет проверить понимание на отдельном учебном наборе файлов. Откройте нужную тему или воспользуйтесь маршрутом обучения для последовательного изучения.
Команды 23
Команда pwd: узнать текущий каталог Linux
Узнайте, откуда разрешаются относительные пути. Разберите вывод pwd, различие логического и физического пути и ограничения учебной среды.
Команды ↗Команда cd в Bash: перейти в каталог и проверить путь
Разберите переходы cd, относительные пути и возврат домой. Узнайте, почему cd должна менять состояние текущего shell и что означает ошибка доступа.
Команды ↗Команда mkdir: создать каталог и дерево с -p
Создайте отдельный каталог или отсутствующие родители через mkdir -p. Разберите повторный запуск, конфликт имени и влияние прав на создание.
Команды ↗Команда touch: создать пустой файл и изменить время
Отличите создание отсутствующего файла от обновления времён существующего. Разберите безопасный учебный пример touch и ограничения симулятора.
Команды ↗Команда cp: копирование файла и дерева каталогов
Скопируйте файл, сохранив источник, и разберите рекурсивную копию. Узнайте, когда cp может заменить назначение и почему копия требует проверки.
Команды ↗Команда mv: переименование и перенос без потери контекста
Перенесите файл в другое имя и проверьте исчезновение старого пути. Разберите отличие mv от копирования и опасность замены назначения.
Команды ↗Команда cat: прочитать и соединить текстовые потоки
Выведите небольшой файл через cat и проследите передачу stdout. Разберите соединение файлов, stdin и риск перенаправления в тот же источник.
Команды ↗Команда head: прочитать начало файла или потока
Ограничьте просмотр первыми строками через head -n. Разберите подсчёт, пустой вход и отличия от фильтрации по содержимому.
Команды ↗Команда tail: последние строки и наблюдение за журналом
Прочитайте конец файла через tail -n и отличите разовый снимок от постоянного наблюдения. Разберите ротацию и ограничения виртуального tail.
Команды ↗Команда wc: строки, слова и байты без путаницы
Посчитайте переводы строк, слова и байты с wc. Узнайте, почему последняя строка без newline меняет результат и как читать подпись имени файла.
Команды ↗Команда echo: вывести текст и учесть поведение shell
Выведите короткую учебную строку и разберите перевод строки, кавычки и перенаправление. Узнайте, когда для предсказуемого вывода лучше printf.
Команды ↗Команда grep: найти строки и различить коды результата
Найдите нужные строки через grep, сравните буквальный поиск и регулярные выражения. Разберите -n, -i, -v, stdout и код отсутствия совпадений.
Команды ↗Команда find: поиск по имени и типу объекта
Найдите файлы по шаблону имени и типу через find. Разберите начальную точку, кавычки у glob и безопасный просмотр без удаления найденного.
Команды ↗Команда chmod: изменить режим доступа конкретного файла
Установите восьмеричный режим chmod и проверьте rwx. Разберите классы доступа, символическую запись и причины, которые не исправляются расширением прав.
Команды ↗Команда sort: упорядочить строки и сохранить исходник
Разберите строковую сортировку, обратный порядок и удаление повторов. На учебном журнале сравните порядок текста с числовой сортировкой и влиянием локали.
Команды ↗Команда uniq: соседние повторы и подсчёт групп
Узнайте, почему uniq не удаляет все повторения во всём файле. Разберите соседние группы, счётчики -c и выбор повторяющихся либо одиночных строк.
Команды ↗Команда cut: выбрать поля по разделителю
Извлеките нужные поля из строк с простым разделителем. Разберите пустые поля, строки без разделителя и порядок результата при списке полей.
Команды ↗Команда tr: замена символов, удаление и сжатие повторов
Преобразуйте ASCII-символы в потоке без изменения исходного файла. Сравните замену набора, удаление символов и сжатие соседних повторений.
Команды ↗Команда tac: читать строки в обратном порядке
Сравните обратный порядок записей с tail и разворотом символов. Разберите конец файла без newline и обработку нескольких файлов по отдельности.
Команды ↗Команда basename: получить последнюю часть имени
Выделите имя из строки пути и при необходимости снимите известный суффикс. Узнайте, почему basename не проверяет существование файла и не разрешает ссылки.
Команды ↗Команда dirname: выделить каталог из строки пути
Получите строку родительской части пути без обращения к файлам. Разберите имя без слеша, корень и компоненты .., которые сохраняются в результате.
Команды ↗Команда rmdir: удалить только пустой каталог
Удалите пустой учебный каталог и разберите отказ для непустой папки. Сравните проверку пустоты с рекурсивным удалением дерева.
Команды ↗Команда ls в Linux: опции и примеры вывода
Команда ls в Linux: синтаксис, опции -a, -l, -h и -d, скрытые файлы и чтение длинного вывода. Примеры, ошибки и отличия браузерного тренажёра.
Самоучитель 2
Практический Linux для начинающих — читать книгу онлайн
Бесплатная книга по Linux: 16 глав о терминале, файлах, правах, процессах, сети и диагностике. Читайте полный текст онлайн или скачайте PDF с упражнениями и ответами.
Самоучитель ↗Первые команды Linux: pwd, cd, ls и пути к файлам
Разберите приглашение shell, текущий каталог и относительные пути. Выполните первые команды в локальном тренажёре без установки Linux.
Shell / Bash 1
Файлы и права 1
systemd и журналы 1
Сеть 1
Ошибки 1
Инструкции 1
Практикумы 15
Практикум grep: собрать отчёт из журнала Linux
Отберите ошибки двух станций, запишите их в отдельный каталог и проверьте содержимое отчёта. Пошаговая практика с Reset и проверкой состояния.
Практикумы ↗Навигация Linux: дойти до нужного каталога
Найдите северную маршрутную карточку, перейдите в её каталог и прочитайте текст. Проверка различает рабочий путь и содержимое последнего вывода.
Практикумы ↗mkdir и cp: подготовить структуру проекта
Создайте каталоги для исходных данных и результатов, перенесите копию README в корень проекта. Исходный документ должен остаться во входящих.
Практикумы ↗Пути с пробелами: скопировать записку смены
Передайте путь с пробелами как один аргумент cp. Сохраните содержимое записки под коротким именем, не изменяя исходный документ.
Практикумы ↗Перенаправление >>: дополнить хронологию
Добавьте два события к существующей записи без её удаления. Сравните дополнение через >> с перезаписью через > на отдельном учебном файле.
Практикумы ↗tail: сохранить последние события журнала
Выделите две завершающие записи в самостоятельный файл. Полный журнал останется доступным для расследования и повторной проверки.
Практикумы ↗grep -v: отделить настройки от комментариев
Исключите строки с маркером комментария из учебной конфигурации. Рабочие значения сохраните отдельно, не меняя объяснения в исходнике.
Практикумы ↗wc и stdin: получить число без имени файла
Посчитайте записи инвентарного списка и сохраните только число. Разберите, почему вывод wc с аргументом-файлом отличается от чтения stdin.
Практикумы ↗find -type f: исключить каталог с похожим именем
Найдите конфигурационный файл, когда каталог тоже заканчивается на .cfg. Сохраните список путей и не изменяйте найденный объект.
Практикумы ↗sort: подготовить упорядоченный список участников
Отсортируйте коды участников в отдельный файл, сохранив повторные записи и исходный порядок во входном документе. Проверка сравнивает весь список.
Практикумы ↗uniq: свернуть только соседние события журнала
Удалите подряд повторившиеся сообщения, сохранив повтор того же события после другого сообщения. Упражнение показывает границы обычной uniq.
Практикумы ↗cut: отделить идентификатор и состояние станции
Выберите первое и третье поля из записей с двоеточием. Сохраните порядок станций и не переносите служебное поле местоположения в результат.
Практикумы ↗tr: подготовить заглавные ASCII-метки
Преобразуйте латинские буквы меток в верхний регистр, сохранив дефисы и номера. Исходные обозначения остаются отдельным документом.
Практикумы ↗tac: показать историю от последнего события
Создайте обратную копию короткой истории, сохранив текст записей. Отличите перестановку строк от изменения символов внутри сообщения.
Практикумы ↗rmdir: освободить пустую папку после переноса
Перенесите акт из временной папки, затем удалите ставший пустым каталог через rmdir. Постоянный архив и соседние документы должны сохраниться.
Задачи 13
Задача chmod 640: ограничить доступ к отчёту
Самостоятельно сформируйте файл ошибок и назначьте права 640. Автопроверка учитывает результат, исходный журнал и режим доступа.
Задачи ↗Задача mv: убрать принятую поставку из очереди
Переместите файл принятой партии в архив. Проверка требует наличие данных в новом месте, отсутствие старого пути и сохранность прежней квитанции.
Задачи ↗Задача chmod 600: закрыть учебный ключ
Ограничьте доступ к безопасному текстовому макету ключа. Измените только права и сохраните содержимое; реальные секреты в упражнении не используются.
Задачи ↗Задача cp -r: сохранить дерево перед правкой
Скопируйте вложенный каталог и дополните рабочий план. Резервная версия должна сохранить прежний текст и вложенные материалы.
Задачи ↗Задача rm: удалить временный каталог и сохранить отчёт
Очистите только учебные промежуточные файлы. Автопроверка различает удаление временного дерева и случайную потерю утверждённого результата.
Задачи ↗Задача grep -i: собрать ошибки разного регистра
Найдите ERROR, Error и error за один отбор. В итоговом файле сохраните исходное написание строк и не включайте успешное событие.
Задачи ↗Задача доступа: вернуть чтение владельцу файла
Исправьте режим заметки с сохранением текста и проверьте чтение. Доступ группы и остальных расширять не требуется.
Задачи ↗Задача публикации: передать только открытый документ
Подготовьте каталог публикации с одним проверенным файлом и режимом 644. Внутреннюю памятку оставьте в рабочем каталоге.
Задачи ↗Задача файлового состояния: очистить, но не удалить
Оставьте существующий пустой файл как признак свободной очереди. Отсутствие файла и нулевое содержимое проверяются как разные состояния.
Задачи ↗Найти коды участников, встречающиеся несколько раз
Подготовьте отсортированный перечень только повторяющихся кодов. Каждый выбранный код выводится один раз, а одиночные участники исключаются.
Задачи ↗Отделить записи с полями от поясняющей строки
Извлеките состояния из записей с двоеточием и исключите строку без разделителя. Сохраните исходный смешанный документ для проверки.
Задачи ↗Сжать повторные пробелы, сохранив границы слов
Приведите серии обычных пробелов к одному, не удаляя разделители между словами. Порядок строк, буквы и цифры должны остаться прежними.
Задачи ↗Разделить строку пути на каталог и имя отчёта
Сохраните родительскую часть и базовое имя без известного суффикса. Файл по указанному пути создавать не нужно: проверяется обработка строки.
Тесты 40
Тест по Linux: потоки, права файлов и systemd
Шесть вопросов по shell, pipeline, правам и systemd. Учебный режим объясняет ответы сразу, экзамен оценивает завершённую попытку.
Тесты ↗Тест: текущий каталог и разрешение пути
Проверьте выбор начальной точки, работу .. и влияние symlink на путь. Четыре ситуации отделяют вычисление строки от обращения к файловой системе.
Тесты ↗Тест: создание каталогов и повторный запуск
Проверьте mkdir -p, конфликт файла и каталога, пустые объекты и проверку результата. Условия помогают отличать существование пути от правильного состояния.
Тесты ↗Тест: копирование, перенос и сохранение источника
Разберите cp и mv на разных назначениях. Проверьте независимость копии, появление нового имени и возможность отката после замены файла.
Тесты ↗Тест: cat, head и tail для чтения данных
Выберите способ просмотра полного текста, начала или конца журнала. Отличите снимок файла от наблюдения и учтите порядок текстовых операций.
Тесты ↗Тест: wc, переводы строк и байты UTF-8
Сравните число newline, слов и байтов на коротких входах. Проверьте, почему визуальная строка не всегда увеличивает результат wc -l.
Тесты ↗Тест: буквальный поиск grep и его результат
Отберите строки с метасимволами, учтите регистр и отрицание. Проверьте различие между найденным совпадением, его отсутствием и ошибкой чтения.
Тесты ↗Тест: область find и безопасный список файлов
Проверьте стартовую точку find, шаблон -name и различие между поиском файлов и поиском текста. Отдельный вопрос касается имён с переводом строки.
Тесты ↗Тест: выбор класса rwx и доступ к каталогу
Проверьте обычные биты Unix без ACL и привилегированных обходов. Разберите совпадение владельца, членство в группе и разные значения x.
Тесты ↗Тест: umask и начальный режим объекта
Рассчитайте результат маски для обычного файла и каталога. Условия явно задают запрошенный режим и исключают default ACL.
Тесты ↗Тест: setuid, setgid и sticky в записи режима
Прочитайте специальные биты в восьмеричной и символической записи. Отделите их отображение от обычных rwx и полной проверки доступа.
Тесты ↗Тест: inode, жёсткие ссылки и удалённый открытый файл
Сравните два имени одного объекта, копию и symlink. Разберите сохранение данных после удаления последнего имени при открытом дескрипторе.
Тесты ↗Тест: порядок перенаправлений stdout и stderr
Проследите назначения файловых дескрипторов при двух порядках операторов. Условия задают исходный терминал и успешное открытие файла.
Тесты ↗Тест: коды pipeline, grep и pipefail
Определите итоговый статус нескольких звеньев Bash. В каждом вопросе явно указан режим pipefail; нулевой результат не приравнивается к качеству данных.
Тесты ↗Тест: кавычки Bash и буквальные аргументы
Определите число аргументов и действие подстановок в Bash. Условия отличают одинарные кавычки, двойные кавычки и незащищённый glob.
Тесты ↗Тест: пустой и отсутствующий параметр Bash
Сравните четыре формы подстановки с двоеточием и без него. Условия задают состояние переменной и буквальное запасное значение.
Тесты ↗Тест: поиск исполняемого файла через PATH
Проследите порядок каталогов PATH, пустую компоненту и имя с косой чертой. Встроенные команды, функции и shell hash исключены условием.
Тесты ↗Тест: переменные окружения и граница процесса
Отличите shell-переменную от экспортируемого окружения, отсутствие от пустоты и наследование от обратного изменения родителя.
Тесты ↗Тест: active, enabled и действия systemctl
Выберите диагностику, запуск, перечитывание конфигурации и обновление unit. Условия предполагают систему, где systemd управляет нужным сервисом.
Тесты ↗Тест: After, Wants и Requires у systemd
Сравните порядок и требования запуска на небольших графах. Отличите цикл порядка от ошибки программы и зависимость от постоянной проверки здоровья.
Тесты ↗Тест: systemd timer, service и пропущенный запуск
Разберите календарное расписание, UTC и Persistent. Отличите момент активации от работы service и успешного результата приложения.
Тесты ↗Тест: поля cron, шаги и календарное совпадение
Прочитайте числовое пятичастное расписание cron. Разберите шаг внутри поля, границы диапазона и связь ограниченных дней месяца и недели.
Тесты ↗Тест: отбор журнала systemd и границы диагностики
Выберите unit, загрузку и число записей для journalctl. Отличите фильтрацию журнала от изменения сервиса и отсутствие записей от доказательства исправности.
Тесты ↗Тест: IPv4-префикс, размер подсети и адреса узлов
Рассчитайте небольшие подсети IPv4 и особые /31, /32. Вопросы отделяют число адресов от традиционного числа узлов и маршрута к одному адресу.
Тесты ↗Тест: выбор маршрута по префиксу и метрике
Выберите маршрут в одной таблице unicast IPv4. Проверьте приоритет точной сети, сравнение одинаковых префиксов и отсутствие подходящего пути.
Тесты ↗Тест: записи DNS, TTL и источник результата
Различите A, AAAA, CNAME и MX в учебном наборе DNS. Проверьте смысл TTL и границы локального просмотра записей без сетевого запроса.
Тесты ↗Тест: порт, протокол и прослушивающий процесс
Отделите номер порта от программы и доступности сервиса. Разберите loopback, TCP/UDP и проверку реального listener.
Тесты ↗Тест: SSH config, alias и проверка сервера
Прочитайте простой клиентский блок Host и отделите имя подключения, адрес, пользователя и ключ. Отдельно проверьте роль доверенного отпечатка сервера.
Тесты ↗Тест: права приватного SSH-ключа и пределы проверки
Оцените доступ к приватному ключу и каталогу .ssh. Отличите режим файла от проверки владельца, дополнительных правил и самого подключения.
Тесты ↗Тест: условие firewall и путь пакета
Разберите accept/drop в контексте цепочки и не приравнивайте одно правило к полной политике. Вопросы ориентированы на безопасную диагностику доступа.
Тесты ↗Тест: строка fstab и проверка точки монтирования
Прочитайте шесть полей fstab, escaped-пробел и опции. Отличите успешный разбор строки от доказательства, что реальное монтирование сработает.
Тесты ↗Тест: ro, noexec, nosuid и nodev
Отличите назначение распространённых опций монтирования и их пределы. Проверьте, почему отдельная опция не является полной изоляцией данных.
Тесты ↗Тест: свободное место, inode и причина отказа записи
Сравните два счётчика файловой системы и продолжите диагностику при свободных ресурсах. Вопросы не назначают удаление данных по одному числу.
Тесты ↗Тест: линейный LVM и округление по extent
Рассчитайте простой запрос объёма с заданным размером extent. Отличите доступную ёмкость группы от свободного места внутри файловой системы.
Тесты ↗Тест: пакетный менеджер и источник сведений
Отделите поиск в репозиториях, сведения о пакете и список установленных файлов. Сравните семейства менеджеров без предположения об одинаковых именах.
Тесты ↗Тест: сигналы, остановка процесса и зомби
Разберите TERM, KILL, STOP и CONT по назначению. Отличите просьбу завершиться, неперехватываемый сигнал и запись завершённого ребёнка.
Тесты ↗Тест: nice и приоритет обычного планирования
Оцените направление изменения nice, допустимые границы и отличие от лимита CPU. Условия исключают real-time классы планирования.
Тесты ↗Тест: Base64, UTF-8 и отсутствие шифрования
Различите кодирование, шифрование и преобразование текста в байты. Проверьте padding, выбранный алфавит и ошибку декодирования UTF-8.
Тесты ↗Тест: SHA-256, точные байты и доверенная сумма
Сравните хеш текста и файла, влияние newline и роль доверенного эталона. Отличите контроль целостности от подтверждения автора.
Тесты ↗Тест: порядок диагностики и проверяемый вывод
Пройдите смешанные ситуации с пустым отчётом, местом, сервисом и изменением конфигурации. Выберите следующий шаг по наблюдениям, сохраняя возможность возврата.
Визуальный атлас 40
Схема потоков Bash: stdin, stdout и stderr
Переключайте режимы вывода и прослеживайте данные от журнала к фильтру, счётчику или файлу. Текстовый разбор доступен без JavaScript.
Визуальный атлас ↗Дерево Linux: где находятся программа, настройка и данные
Проследите разные ветви файловой иерархии Linux. Схема отделяет установленную программу, локальную настройку и изменяемое состояние сервиса.
Визуальный атлас ↗Разрешение пути: текущий каталог, компоненты и ссылки
Пройдите путь по компонентам и сравните лексическое упрощение с разрешением символьной ссылки. Увидьте, почему link/.. не всегда сокращается ожидаемо.
Визуальный атлас ↗Inode, жёсткая и символическая ссылка: разные связи
Сравните два имени одного inode с отдельным symlink. Проследите удаление имени и объясните, почему данные иногда остаются доступны после удаления файла.
Визуальный атлас ↗Проверка rwx: выбрать класс доступа и нужную операцию
Проследите выбор владельца, группы или остальных при обычной проверке битов Unix. Сравните чтение файла, проход по каталогу и ошибочную сумму разрешений.
Визуальный атлас ↗Порядок перенаправлений: куда уходят stdout и stderr
Сравните >file 2>&1 и 2>&1 >file по состоянию дескрипторов. Схема показывает копирование текущего назначения и объясняет разные результаты.
Визуальный атлас ↗Состояния процесса: выполнение, ожидание и зомби
Проследите смену состояний процесса при ожидании данных, остановке и завершении. Отличите готовность к CPU от зомби, которому уже нечего выполнять.
Визуальный атлас ↗systemd: порядок запуска и требование зависимости
Сравните After=, Wants= и Requires= на небольшой схеме units. Поймите, почему порядок сам по себе не добавляет сервис в транзакцию запуска.
Визуальный атлас ↗Выбор маршрута: длинный префикс важнее малой метрики
Проследите поиск IPv4-маршрута в одной таблице. Сравните default, более точную сеть и два маршрута одинаковой длины с разными метриками.
Визуальный атлас ↗Место и inode: два независимых ограничения файловой системы
Сопоставьте свободные байты и доступные inode на трёх учебных снимках. Найдите, почему запись нового файла может не удаваться при свободном месте.
Визуальный атлас ↗SSH-ключи на схеме: подпись вместо передачи секрета
Разберите роли закрытого ключа, открытого ключа и разрешения входа. Сравните действительную подпись с отсутствием разрешённого ключа у пользователя.
Визуальный атлас ↗Путь пакета: input, forward и output
Определите, какой сетевой путь относится к пакету. Сравните обращение к самому серверу с транзитом через него к другому узлу.
Визуальный атлас ↗Namespaces: разные представления одного ядра
Сравните PID и сетевые пространства Linux. Узнайте, какие объекты становятся видны по-разному и почему отдельное представление не означает отдельное ядро.
Визуальный атлас ↗Дерево cgroup v2: лимиты родителя и потомков
Проследите действие ограничения памяти в иерархии. Сравните локальный предел дочерней группы с общим пределом всей ветви.
Визуальный атлас ↗Контейнер Linux: процессы, изоляция и общее ядро
Разберите состав контейнера без сравнения с полноценной виртуальной машиной. Сопоставьте видимость ресурсов и ограничения их расхода.
Визуальный атлас ↗Карта /proc: процесс, self и системные сведения
Выберите правильную ветвь procfs для вопроса о процессе или системе. Поймите, почему /proc/self зависит от читающего процесса.
Визуальный атлас ↗Карта /sys: объекты устройств и их атрибуты
Проследите связь представления устройства с атрибутами sysfs. Отделите чтение состояния ядра от сохранённого конфигурационного файла.
Визуальный атлас ↗Системный вызов read: запрос, проверка и результат
Проследите чтение через файловый дескриптор. Сравните успешный короткий результат с ошибкой неверного дескриптора.
Визуальный атлас ↗Схема нагрузки: CPU, память и момент измерения
Сопоставьте признаки вычислительной нагрузки и дефицита памяти. Выберите следующую проверку по нескольким наблюдениям, а не по одному большому числу.
Визуальный атлас ↗Дерево диагностики: от симптома к проверяемой причине
Пройдите две ветки отказа сервиса: процесс не запущен и процесс работает без нужного слушателя. Каждая развилка опирается на конкретное наблюдение.
Визуальный атлас ↗IPv4 на схеме: где заканчивается префикс
Разделите IPv4-адрес на сетевые и узловые биты. Два примера /26 показывают, почему соседние адреса могут принадлежать разным подсетям.
Визуальный атлас ↗Путь DNS-запроса: кэш и обращение к резолверу
Проследите получение A-записи с действующим кэшем и без него. Отделите ответ DNS от последующего соединения с приложением.
Визуальный атлас ↗TCP и UDP: что хранит схема сокетов
Сравните поток TCP и отдельные датаграммы UDP. Поймите, почему границы вызовов записи и границы получаемых сообщений совпадают не всегда.
Визуальный атлас ↗Слушающий порт: адрес привязки и доступность
Разберите разницу между loopback и привязкой ко всем IPv4-интерфейсам. Схема отделяет наличие слушателя от прохождения сетевого пути.
Визуальный атлас ↗Точки монтирования: какое дерево видно по пути
Посмотрите, как подключённая файловая система закрывает прежнее содержимое каталога. Сравните вид пути до монтирования и после него.
Визуальный атлас ↗Устройство, раздел и файловая система: слои хранения
Проследите путь от блочного устройства к файлу. Сравните файловую систему на разделе с файловой системой на целом устройстве.
Визуальный атлас ↗LVM на схеме: PV, VG и логический том
Свяжите физические тома с группой и логическими томами. Разберите распределение свободных extents и отдельный размер файловой системы.
Визуальный атлас ↗Граф пакетов: зависимость, версия и план установки
Прочитайте учебный граф зависимостей до изменения системы. Сравните удовлетворённое ограничение версии с отсутствующим подходящим кандидатом.
Визуальный атлас ↗Проверка репозитория APT: подпись и цепочка хэшей
Разберите, как доверие к метаданным связывается с загруженным пакетом. Сравните корректную цепочку с изменённым файлом пакета.
Визуальный атлас ↗Этапы SSH: транспорт, сервер и пользователь
Проследите подключение SSH от адреса до сеанса. Отличите отказ TCP от несовпадения ключа сервера и проверки учётной записи.
Визуальный атлас ↗Схема umask: какие биты исчезают при создании
Сравните создание файла и каталога при одной маске. Схема показывает исходный запрос, запрещённые биты и итог без арифметического вычитания.
Визуальный атлас ↗Владелец и группа: какой класс прав выбирается
Проследите выбор обычной тройки доступа при двух наборах идентификаторов. Схема отделяет владельца файла от членства процесса в группах.
Визуальный атлас ↗Дерево процессов: создание ребёнка и смена программы
Проследите связь родителя и ребёнка при fork и exec. Сравните создание нового процесса с заменой программы в уже существующем процессе.
Визуальный атлас ↗Путь сигнала: отправитель, задача и обработчик
Сравните обрабатываемый запрос завершения с неперехватываемой остановкой. Схема показывает, почему отправка сигнала не всегда равна мгновенному результату.
Визуальный атлас ↗Таблица дескрипторов: номер и открытый файл
Проследите связь номера FD с открытым файловым описанием. Сравните дублирование дескриптора с отдельным открытием одного пути.
Визуальный атлас ↗Три стандартных потока: данные, ввод и диагностика
Сравните успешный фильтр и ошибку чтения источника. Схема отделяет FD 0, FD 1 и FD 2 без предположения, что все они всегда относятся к терминалу.
Визуальный атлас ↗Раскрытия Bash: от исходного слова к аргументам
Проследите подстановку параметра, разделение слов и поиск имён. Сравните незащищённое значение с тем же значением в двойных кавычках.
Визуальный атлас ↗Окружение и PATH: что получает дочерняя программа
Сравните экспорт параметра и порядок поиска команды. Схема разделяет передачу значений дочернему процессу и выбор исполняемого файла.
Визуальный атлас ↗Загрузка Linux: ядро, ранняя среда и userspace
Проследите типичный путь запуска через загрузчик, ядро и PID 1. Сравните ошибку нахождения корня с отказом позднего сервиса.
Визуальный атлас ↗Путь события в journal: источник, хранение и отбор
Разделите появление записи, её сохранение и последующее чтение. Сравните отсутствие события с ситуацией, когда его исключает фильтр.
Инструменты 40
Калькулятор chmod онлайн: права rwx и числа
Выберите права владельца, группы и остальных. Получите режим chmod, символьную запись и объяснение для файла или каталога.
Инструменты ↗Терминал Linux онлайн — учебный тренажёр
Тренируйте команды Linux онлайн без установки: файлы, пайпы, перенаправления и chmod. Учебный симулятор работает в браузере и не обращается к вашей системе.
Инструменты ↗Калькулятор umask: права нового файла и каталога
Рассчитайте обычные права при создании объекта с выбранной umask. Сравните исходные режимы файла и каталога и побитовое исключение разрешений.
Инструменты ↗Калькулятор IPv4 CIDR: сеть, маска и диапазон
Определите сеть IPv4, маску и диапазон адресов по адресу с префиксом. Отдельно показаны пограничные случаи /31 и /32.
Инструменты ↗Нормализатор пути Linux: точки и родительские каталоги
Разберите относительный путь от выбранного рабочего каталога. Инструмент убирает лишние разделители и обрабатывает точки без обращения к диску.
Инструменты ↗Симулятор PATH: поиск исполняемого файла по каталогам
Посмотрите порядок кандидатов при поиске команды через PATH. Учебный список файлов позволяет увидеть, почему выбирается первая найденная версия.
Инструменты ↗Декодер прав Linux: octal, rwx и специальные биты
Переведите три или четыре восьмеричные цифры в символьную запись прав. Разберите setuid, setgid, sticky и различие маленьких и заглавных символов.
Инструменты ↗Конвертер размера диска: GB, GiB, MB и MiB
Сравните десятичные и двоичные единицы объёма. Получите размер в байтах и разберите различие между гигабайтом и гибибайтом.
Инструменты ↗Калькулятор inode: заполнение и запас по числу файлов
Посчитайте долю занятых inode и условный запас при постоянном приросте. Свободное место в байтах рассматривается отдельно от числа объектов.
Инструменты ↗Base64 онлайн: кодирование и декодирование UTF-8
Преобразуйте учебный текст UTF-8 в Base64 и обратно. Проверяются алфавит, padding и корректность текстовой кодировки после декодирования.
Инструменты ↗SHA-256 файла и текста: локальная контрольная сумма
Вычислите SHA-256 выбранного файла или текста UTF-8 прямо в браузере. Сравните контрольную сумму, размер и влияние переводов строк без загрузки данных на сервер.
Инструменты ↗Кавычки Bash: представить текст одним буквальным аргументом
Получите безопасную для shell запись одного буквального аргумента. Пробелы, апострофы и знаки подстановок сохраняются как текст.
Инструменты ↗Справочник кодов завершения: смысл статуса shell
Введите код 0–255 и получите осторожную интерпретацию статуса. Отдельно разобраны 126, 127 и возможная связь значений выше 128 с сигналами.
Инструменты ↗Калькулятор nice: относительное изменение предпочтения CPU
Сопоставьте исходный nice и поправку в диапазоне Linux. Результат объясняет направление изменения без обещания конкретного процента CPU.
Инструменты ↗Конструктор find: путь, имя и тип без удаления
Соберите команду поиска файлов по имени и типу. Аргументы заключаются в кавычки, а действия удаления и запуска программ не добавляются.
Инструменты ↗Конструктор journalctl: unit, загрузка и число записей
Подготовьте команду чтения журнала конкретного systemd unit. Выберите текущую загрузку и ограничьте число записей без изменения сервиса.
Инструменты ↗Проверка битов SSH: закрытый ключ и каталог .ssh
Проверьте обычные биты доступа ключа и каталога .ssh. Результат выделяет лишние разрешения и объясняет границы такой проверки.
Инструменты ↗Декодер ls -l: поля длинной записи файла
Разберите строку длинного вывода на тип, права, владельцев, размер, дату и имя. Формат входа задан явно, чтобы не путать разные варианты ls.
Инструменты ↗Помощник cron: разбор пяти полей расписания
Разберите минуты, часы, даты, месяцы и дни недели в выражении cron. Поддерживаются числа, списки, диапазоны и шаги без выполнения команды.
Инструменты ↗Помощник systemd timer: ежедневное расписание UTC
Составьте учебный timer для ежедневного запуска отдельного service. Часовой пояс задан явно, а пропущенные активации настраиваются отдельно.
Инструменты ↗Порядок systemd units: просмотр графа и поиск цикла
Задайте связи предшествования units и получите один допустимый порядок. Циклы обнаруживаются отдельно от зависимостей, запускающих другие units.
Инструменты ↗Помощник grep -F: буквальная строка и кавычки
Подготовьте буквальный поиск текста, содержащего скобки или другие метасимволы. Конструктор отделяет шаблон от опций команды.
Инструменты ↗Конструктор tar: учебный архив и проверка списка
Подготовьте команды создания gzip-архива и просмотра его списка. Перед записью проверьте расположение архива и существующее назначение.
Инструменты ↗Конструктор rsync: пробная передача локального каталога
Соберите dry-run для локального копирования и разберите завершающий слеш источника. Удаление файлов назначения не добавляется.
Инструменты ↗Помощник SSH config: Host, пользователь и ключ
Составьте небольшой клиентский фрагмент SSH config для учебного узла. Проверка ключа сервера сохраняется, соединения не выполняются.
Инструменты ↗Разбор firewall: протокол, порт и вердикт правила
Исследуйте смысл одного условия фильтрации трафика. Accept и drop объясняются в контексте цепочек без генерации изменений рабочего firewall.
Инструменты ↗Порты и сервисы: локальный справочник назначений
Посмотрите распространённое назначение выбранного порта и подход к проверке слушающих сокетов. Номер не выдаётся за доказательство протокола.
Инструменты ↗Просмотр DNS-записей: локальный учебный набор
Разберите имена, TTL, типы и значения записей, введённых вручную. Фильтруйте A, AAAA, CNAME, MX и TXT без DNS-запросов.
Инструменты ↗Выбор маршрута IPv4: префикс и метрика в одной таблице
Сравните подходящие маршруты для адреса и увидьте выбор учебной модели. Более длинный префикс рассматривается раньше меньшей метрики.
Инструменты ↗Разбор fstab: шесть полей записи монтирования
Разделите учебную строку fstab на источник, точку, тип, опции и поля проверки. Получите пояснение без выполнения mount.
Инструменты ↗Справочник опций mount: ro, noexec, nosuid и nodev
Разберите распространённые опции монтирования по введённому списку. Неизвестные параметры явно требуют документации файловой системы.
Инструменты ↗Планировщик LVM: округление размера до extent
Рассчитайте число экстентов для линейного учебного тома. Сравните запрошенный объём с фактическим округлением и свободным запасом.
Инструменты ↗Команды пакетов: выбрать менеджер и цель просмотра
Получите команду поиска, описания или просмотра установленного пакета для выбранного семейства Linux. Изменение пакетов не выполняется.
Инструменты ↗APT, DNF и Pacman: сравнение команды по одной задаче
Сопоставьте три семейства команд для выбранного действия над сведениями о пакете. Параллельный вывод помогает увидеть разные базы и синтаксис.
Инструменты ↗Справочник сигналов Linux: действие и возможность обработки
Выберите сигнал и сравните его назначение с действием по умолчанию. Особенности KILL и STOP выделены без отправки сигналов процессам.
Инструменты ↗Подстановка Bash: отсутствие, пустая строка и значения по умолчанию
Сравните четыре оператора подстановки параметра. Модель различает unset и пустое значение, не исполняя Bash и вложенные выражения.
Инструменты ↗Тестер регулярных выражений: JavaScript и границы переноса в grep
Проверьте шаблон на учебном тексте в отдельном Worker с лимитом времени. Диалект JavaScript явно отделён от регулярных выражений GNU grep.
Инструменты ↗Конструктор текстового потока: фильтр, срез и подсчёт
Соедините несколько локальных текстовых операций и проследите размер промежуточного результата. Учебный язык этапов не исполняет shell-команды.
Инструменты ↗Обозреватель переменных: учебный набор NAME=value
Различите заданное значение, пустую строку и отсутствие имени. Обозреватель работает с введённым набором, не читая окружение устройства.
Инструменты ↗Подбор команды Linux по задаче: просмотр и следующий шаг
Выберите цель и получите подходящее направление работы с Linux. Подсказка объясняет назначение команды и ограничения первого диагностического шага.
Проекты 7
Практика systemd: восстановить учебный сервис
Прочитайте состояние и журнал, сохраните конфигурацию, исправьте порт и проверьте запуск. Локальная симуляция инцидента с проверкой результата.
Проекты ↗Проект Linux: подготовить передачу предупреждений
Соберите предупреждения измерений, посчитайте их и ограничьте права отчёта. Приёмка одновременно проверяет данные, доступ и сохранность источников.
Проекты ↗Проект восстановления: вернуть документ из резервной копии
Сохраните повреждённый вариант, восстановите рабочий документ и подтвердите его чтение. Резервная копия должна остаться неизменной.
Проекты ↗Проект ротации: отделить старую смену от нового журнала
Перенесите завершённую смену в отдельный файл и создайте новый текущий журнал. Более ранние архивы должны остаться нетронутыми.
Проекты ↗Проект передачи: собрать документы и точный манифест
Подготовьте две копии документов и список их путей. Внутренняя заметка не должна попасть в набор передачи.
Проекты ↗Проект: сводка состояний по станциям
Соберите уникальный перечень готовых станций из текстового экспорта. Отдельно сохраните количество станций и защитите результат от записи другими классами.
Проекты ↗Проект: подготовить печатные метки и обратную историю
Соберите комплект из нормализованных меток и истории обработки от последней записи. Проверьте независимость двух потоков и сохранность исходных документов.
Словарь 60
UID: числовая идентичность пользователя
Отделите UID от отображаемого имени учётной записи. Узнайте, почему совпадение чисел между машинами или пространствами не гарантирует одну идентичность.
Словарь ↗GID: группа файла и группы процесса
Разберите числовой идентификатор группы и дополнительное членство. Почему одна показанная основная группа не описывает все групповые права процесса.
Словарь ↗Суперпользователь root: полномочия и ограничения
Разберите роль UID 0 и её связь с привилегиями Linux. Почему слово root не означает обход любых настроек, namespaces и политик безопасности.
Словарь ↗Sudo: запуск команды по политике делегирования
Узнайте, что проверяет sudo и почему она не всегда означает запуск от root. Разберите отдельную роль оболочки при перенаправлении вывода.
Словарь ↗Capability Linux: отдельное привилегированное полномочие
Узнайте, зачем Linux разделяет привилегии на capabilities. Отделите наличие одного полномочия от полного доступа суперпользователя.
Словарь ↗ACL доступа: именованные разрешения и маска
Разберите, что POSIX ACL добавляет к обычным rwx. Узнайте, почему запись с разрешением может ограничиваться маской и как связаны ACL и групповые биты.
Словарь ↗Umask: какие права исключаются при создании
Отделите маску создания от режима существующего файла. Почему результат зависит от запроса программы и не вычисляется обычным вычитанием чисел.
Словарь ↗Биты режима файла: rwx и специальные признаки
Разберите обычные тройки владельца, группы и остальных. Узнайте, почему одинаковая буква x означает разные возможности для файла и каталога.
Словарь ↗Владелец файла: UID объекта и выбор доступа
Узнайте, как владелец влияет на обычную проверку прав. Отделите владельца файла от владельца каталога и от процесса, который его сейчас читает.
Словарь ↗Sticky bit каталога: ограничение удаления имён
Разберите защиту имён в общем каталоге и её отличие от запрета записи в файлы. Узнайте, какие владельцы и полномочия учитываются при удалении.
Словарь ↗Inode: файловый объект и метаданные без имени
Узнайте, что связывает имя файла с inode и почему одного номера недостаточно для сравнения объектов на разных файловых системах.
Словарь ↗Жёсткая ссылка: ещё одно имя того же файлового объекта
Разберите связь жёстких ссылок с inode и отличия от копии. Узнайте, почему удаление одного имени не обязательно удаляет данные.
Словарь ↗Символическая ссылка: путь, разрешаемый при обращении
Узнайте, как работает symlink и откуда начинается относительный путь внутри ссылки. Разберите отличие повреждённой ссылки от отсутствующего имени.
Словарь ↗Файловый дескриптор: номер открытого ресурса
Разберите FD как индекс в таблице процесса. Узнайте, почему одинаковый номер у разных процессов не означает один и тот же открытый файл.
Словарь ↗Открытое файловое описание: общее состояние доступа
Узнайте, где хранится текущая позиция открытого файла. Разберите, как dup связывает два дескриптора и почему два open могут вести себя иначе.
Словарь ↗Файловая система: организация имён и данных
Отделите файловую систему от диска и точки монтирования. Узнайте, почему файловый интерфейс может показывать динамические сведения вместо данных на устройстве.
Словарь ↗Точка монтирования: место подключения другого дерева
Разберите, как путь связывается с подключённой файловой системой. Почему прежние данные под точкой монтирования могут исчезнуть из вида без удаления.
Словарь ↗Блочное устройство: адресуемые блоки хранения
Отделите блочное устройство от физического диска и файловой системы. Разберите, почему имя /dev не доказывает наличие безопасно доступных пользовательских файлов.
Словарь ↗Раздел диска: выделенная область устройства
Узнайте, какую задачу решает таблица разделов и чем раздел отличается от файловой системы. Почему расширение одного слоя не завершает работу с другим.
Словарь ↗UUID в хранении Linux: идентификатор и область смысла
Разберите UUID файловой системы и отличие от идентификатора раздела. Узнайте, почему копирование образа может нарушить ожидаемую уникальность.
Словарь ↗IP-адрес: сетевое назначение в выбранном контексте
Разберите роль IP-адреса и его отличие от имени сайта или постоянного идентификатора устройства. Учитывайте интерфейс, семейство протокола и сеть.
Словарь ↗CIDR: длина сетевого префикса после слеша
Узнайте, что означает число в записи адрес/префикс. Разберите границы IPv4-блока и почему размер диапазона не всегда равен числу обычных узлов.
Словарь ↗Маршрут: правило выбора пути для пакета
Разберите таблицу маршрутов и смысл подходящего префикса. Почему наличие default route не означает, что любой пакет пойдёт именно по нему.
Словарь ↗Сокет: интерфейс обмена для приложения
Узнайте, как сокет связывает программу с обменом данными. Отделите локальный ресурс, сетевой адрес и слушающий сервис.
Словарь ↗Сетевой порт: номер внутри транспортного контекста
Разберите порт вместе с протоколом и адресом привязки. Почему одинаковый номер не означает одну службу и не подтверждает доступность.
Словарь ↗DNS: имена, типы записей и кэш ответов
Отделите разрешение имени от подключения к приложению. Узнайте, почему найденная A-запись не доказывает наличие всех остальных записей и доступность сервера.
Словарь ↗Namespace Linux: область видимости ресурсов
Разберите пространства имён как отдельные представления ресурсов. Почему изоляция PID не задаёт автоматически лимит памяти или отдельное ядро.
Словарь ↗Cgroup: учёт и управление ресурсами группы процессов
Узнайте, как иерархия cgroups связывает процессы с ограничениями. Разберите общий предел родителя и отличие от изоляции видимости.
Словарь ↗Контейнер Linux: изолированный userspace на общем ядре
Разберите обычный контейнер как среду процессов с заданными ресурсами и ограничениями. Отделите образ, запущенный экземпляр и виртуальную машину.
Словарь ↗Page cache: данные файлов в оперативной памяти
Узнайте, зачем Linux использует память для кэширования файлов. Почему небольшой показатель free сам по себе не доказывает нехватку памяти.
Словарь ↗Терминал Linux: интерфейс ввода и отображения
Разберитесь, какую роль играет терминал между пользователем и программой. Отделите окно терминального эмулятора от shell, текущего каталога и самого Linux.
Словарь ↗Shell в Linux: оболочка и язык команд
Узнайте, что делает оболочка до запуска программы. Различайте разбор командной строки, встроенные команды, внешние утилиты и особенности конкретного shell.
Словарь ↗TTY: терминальное устройство и его настройки
Разберите смысл TTY в Linux и связь с символьным вводом. Узнайте, почему вывод программы может меняться при перенаправлении в файл.
Словарь ↗PTY: пара псевдотерминала master и slave
Узнайте, как псевдотерминал связывает эмулятор и консольную программу. Различайте его две стороны и обычный однонаправленный pipe.
Словарь ↗Командная строка: исходный текст и результат разбора
Отделите текст, введённый в оболочку, от аргументов полученной программы. Разберите, куда исчезают кавычки и перенаправления после запуска.
Словарь ↗Аргумент команды: отдельное значение для программы
Разберитесь, почему пробел внутри имени требует правильных кавычек. Узнайте, как один аргумент может содержать несколько слов и даже пустую строку.
Словарь ↗Опция команды: переключатель поведения утилиты
Узнайте, как опции отличаются от операндов и почему не всякий дефис означает флаг. Разберите роль -- и аргументов, которые нужны самим опциям.
Словарь ↗Текущий каталог: начальная точка относительного пути
Узнайте, какое состояние меняет cd и почему относительный путь после перехода означает другой объект. Отделите текущий каталог от домашнего.
Словарь ↗Абсолютный путь Linux: отсчёт от корня процесса
Разберите путь с начальным слешем и его зависимость от представления файловой системы. Узнайте, почему абсолютный адрес не означает одинаковый объект везде.
Словарь ↗Относительный путь: имя от выбранного каталога
Разберите относительные пути, компоненты . и .. и влияние рабочей точки. Узнайте, когда одной строки имени недостаточно для воспроизводимого действия.
Словарь ↗Процесс Linux: выполняемая программа и её состояние
Отделите процесс от исполняемого файла и от имени команды. Разберите ресурсы процесса и возможность запуска нескольких экземпляров одной программы.
Словарь ↗Поток выполнения: общие ресурсы и отдельная работа
Узнайте, что разделяют потоки одного процесса и что остаётся отдельным. Почему несколько потоков не гарантируют пропорционального ускорения задачи.
Словарь ↗PID: идентификатор процесса в текущем пространстве
Разберите назначение PID, повторное использование номера и различия внутри PID namespaces. Узнайте, почему записанного числа недостаточно для постоянной идентификации.
Словарь ↗PPID: текущий родитель процесса
Узнайте, какую связь показывает PPID и почему она может меняться после завершения родителя. Отделите дерево происхождения от служебных зависимостей.
Словарь ↗Демон Linux: программа, работающая как фоновая служба
Разберитесь в роли долгоживущего служебного процесса. Отделите демона от фонового job оболочки и от объекта управления service manager.
Словарь ↗Сигнал Linux: уведомление и реакция процесса
Разберите отправку, доставку и обработку сигнала. Почему успешный запрос завершения не подтверждает сохранение данных и окончание работы приложения.
Словарь ↗Exit status: код результата команды
Узнайте, что сообщает код завершения и почему ненулевое значение не всегда означает одинаковую ошибку. Разберите статус отдельной команды и pipeline.
Словарь ↗Окружение процесса: значения, переданные при запуске
Отделите environment от всех переменных оболочки. Узнайте, что получает дочерняя программа и почему изменения не возвращаются родителю автоматически.
Словарь ↗PATH: порядок каталогов для поиска команды
Разберите поиск исполняемого файла по имени без слеша. Узнайте, почему порядок каталогов и контекст оболочки могут менять выбранную программу.
Словарь ↗Job оболочки: управляемая работа и процессы pipeline
Отделите номер job от PID и системного сервиса. Узнайте, как оболочка может рассматривать несколько процессов pipeline как одну работу.
Словарь ↗Стандартные потоки: stdin, stdout и stderr
Разберите назначение трёх обычных каналов программы. Узнайте, почему диагностическое сообщение не обязано попасть в файл с результатом.
Словарь ↗Pipe: канал между выводом и вводом процессов
Узнайте, что связывает обычный pipe и почему он не хранит полноценный итоговый файл. Отделите поток байтов от границ сообщений приложения.
Словарь ↗Перенаправление: смена источника или назначения FD
Разберите действия оболочки при <, > и >>. Почему ошибка программы не спасает файл, который оболочка уже открыла с очисткой.
Словарь ↗Globbing: подбор файловых имён по шаблону shell
Отделите шаблон имён от регулярного выражения. Разберите, когда оболочка раскрывает звёздочку и почему кавычки меняют полученные аргументы.
Словарь ↗Регулярное выражение: шаблон и конкретный диалект
Узнайте, почему regex нельзя оценивать без выбранного движка. Отличите поиск буквальной строки от интерпретации специальных символов.
Словарь ↗Пакет Linux: устанавливаемая единица с метаданными
Разберите содержимое пакета и связь с командами. Почему имя пакета не обязано совпадать с именем утилиты и установка не доказывает запуск службы.
Словарь ↗Репозиторий пакетов: индекс, кандидаты и доверие
Узнайте, как источник пакетов влияет на доступные версии. Отделите подключение репозитория от проверки подлинности и фактической установки.
Словарь ↗Зависимость: требование к другому компоненту
Разберите зависимости пакетов и порядок запуска как разные виды связей. Почему стрелка на схеме требует пояснения конкретного правила.
Словарь ↗Unit systemd: объект управления и его тип
Узнайте, что объединяет service, timer, target и другие unit. Отделите файл конфигурации, загруженное состояние и фактическую активность.
Словарь ↗Journal systemd: записи событий и условия их отбора
Отделите системный журнал от команды journalctl. Узнайте, почему пустая выборка и отсутствие сохранённого события — разные утверждения.
Шпаргалки 30
Шпаргалка: определить контекст открытого терминала
Перед работой проверьте узел, пользователя, каталог и способ разрешения команды. Различайте интерактивную оболочку, терминальное устройство и удалённую сессию.
Шпаргалки ↗Шпаргалка: передавать пути с пробелами и дефисами
Сохраните имя пути одним аргументом, отделите параметры от данных и проверьте, как Bash видит значение. Подходит для ручной работы с необычными именами.
Шпаргалки ↗Шпаргалка: читать тип, размер и метаданные файла
Выберите между ls и stat, отличите запись каталога от его содержимого и проверьте данные ссылки. Размер, владелец и время отвечают на разные вопросы.
Шпаргалки ↗Шпаргалка: быстро осмотреть текстовый файл
Откройте начало, конец или выбранный объём текста и различайте число строк, слов и байтов. Просмотр не должен менять исходный файл.
Шпаргалки ↗Шпаргалка: найти буквальный текст и понять статус grep
Ищите точную строку без регулярных выражений, добавьте номера и отличите отсутствие совпадений от ошибки. Подсчёт строк не равен подсчёту всех вхождений.
Шпаргалки ↗Шпаргалка: извлечь поля из простого текстового формата
Работайте с пустыми полями, списками номеров и строками без разделителя в GNU cut. Определите, когда обычного разделения уже недостаточно.
Шпаргалки ↗Шпаргалка: сортировать строки и считать повторы
Выберите текстовое или числовое сравнение, сгруппируйте дубли и сохраните исходную последовательность отдельно. Различайте uniq и глобальную уникальность.
Шпаргалки ↗Шпаргалка: сравнить две копии файла без изменения
Отличите побайтовое равенство от удобного просмотра текстовых различий. Корректно интерпретируйте статусы cmp и diff перед передачей отчёта.
Шпаргалки ↗Шпаргалка: искать файлы по имени, типу и глубине
Ограничьте дерево поиска GNU find, передайте шаблон имени без раскрытия оболочкой и отделите отбор объектов от действий над ними.
Шпаргалки ↗Шпаргалка: различать место файловой системы и каталогов
Сопоставьте df, du, размер файла и свободные inode. Найдите, к какой файловой системе относится путь, прежде чем объяснять нехватку места.
Шпаргалки ↗Шпаргалка: проверить доступ к файлу перед изменением прав
Сопоставьте пользователя, владельца, режим, ACL и проход по каталогам. Не сводите каждое Permission denied к отсутствию одного бита у файла.
Шпаргалки ↗Шпаргалка: рассчитать исходные права через umask
Отделите маску новых объектов от режима существующего файла. Рассчитайте типичные начальные права и учтите ACL, запрошенный режим и настройки программы.
Шпаргалки ↗Шпаргалка: направлять stdout и stderr в правильном порядке
Проследите дескрипторы 0, 1 и 2, различайте замену файла и добавление и разберите порядок перенаправлений Bash на безопасном потоке.
Шпаргалки ↗Шпаргалка: проверять статусы всех звеньев pipeline
Разберите статус последней команды, pipefail и массив PIPESTATUS в Bash. Сохраняйте результат сразу и не смешивайте ошибку обработки с пустой выборкой.
Шпаргалки ↗Шпаргалка: различать переменную shell и окружение программы
Проверьте значение и факт установки переменной, передайте параметр дочерней программе и не раскрывайте всё окружение при диагностике.
Шпаргалки ↗Шпаргалка: сохранять границы аргументов в Bash
Используйте "$@", счётчик $# и массивы, чтобы пробелы и пустые значения не потерялись. Разберите назначение $0 при запуске bash -c.
Шпаргалки ↗Шпаргалка: обходить имена файлов без разбора ls
Сохраните пробелы и переводы строки в именах, настройте поведение пустого glob и используйте NUL для передачи путей между программами.
Шпаргалки ↗Шпаргалка: управлять задачами интерактивной оболочки
Различайте job и PID, фон и остановку, fg и bg. Завершайте собственный учебный процесс осознанно и не считайте амперсанд заменой менеджера служб.
Шпаргалки ↗Шпаргалка: найти процесс и прочитать его состояние
Выберите поля ps, различайте PID и PPID, прочитайте state и проверьте команду. Снимок процессов не является полной историей нагрузки.
Шпаргалки ↗Шпаргалка: читать память и swap без поспешных выводов
Сравните available, свободную память, кэш и swap, затем наблюдайте изменения. Малое значение free само по себе не доказывает нехватку RAM.
Шпаргалки ↗Шпаргалка: проверить состояние службы systemd
Разделите active, enabled и загруженную конфигурацию unit. Начните диагностику с чтения состояния, прежде чем перезапускать службу или менять её файлы.
Шпаргалки ↗Шпаргалка: сузить выборку системного журнала
Выберите загрузку, период, unit и уровень событий journalctl. Пустая выборка не всегда означает отсутствие ошибки или сообщений приложения.
Шпаргалки ↗Шпаргалка: собрать признаки медленной загрузки Linux
Сопоставьте длительность этапов systemd, цепочку активации и журналы загрузок. Не принимайте самый длинный unit за автоматически найденную причину задержки.
Шпаргалки ↗Шпаргалка: проверить расписание и запуск systemd timer
Посмотрите следующий запуск, связанный сервис и смысл календарного выражения. Различайте срабатывание таймера и успешное завершение работы.
Шпаргалки ↗Шпаргалка: прочитать интерфейсы и адреса Linux
Отделите состояние интерфейса от назначенных IP-адресов, выберите семейство и проверьте счётчики. Наличие адреса ещё не подтверждает доступность сервиса.
Шпаргалки ↗Шпаргалка: выяснить маршрут к конкретному адресу
Посмотрите таблицы и правила маршрутизации, затем запросите выбранный путь для адреса. Наличие default route не объясняет каждый исходящий пакет.
Шпаргалки ↗Шпаргалка: проверить слушающие сокеты и привязку сервиса
Различайте TCP и UDP, loopback и wildcard, адрес и порт. Найдите видимые сокеты через ss и учитывайте ограничения информации о процессе.
Шпаргалки ↗Шпаргалка: отделить системное разрешение имени от DNS
Сравните getent, hosts и конфигурацию NSS, затем при необходимости DNS-инструмент. Один успешный DNS-запрос не гарантирует такой же результат приложения.
Шпаргалки ↗Шпаргалка: сопоставить путь, монтирование и блочное устройство
Прочитайте findmnt и lsblk, отличите настроенный fstab от текущих mount и проверьте файловую систему конкретного пути без изменения дисков.
Шпаргалки ↗Шпаргалка: определить установленный пакет и владельца файла
Выберите запрос для Debian/Ubuntu, RPM-семейства или Arch, проверьте локальную базу и отделите установленную версию от доступной в репозитории.
Устройство Linux 20
Cgroup процесса: принадлежность, версия и видимый путь
Найдите cgroup выбранного PID, отличите v2 от legacy-записей и сопоставьте путь с монтированием, не предполагая одинаковую структуру внутри контейнера.
Устройство Linux ↗Память cgroup v2: current, high, max и события OOM
Сопоставьте расход памяти группы с high и max, проверьте прирост memory.events и отличите ограничение контейнера от запаса RAM всей машины.
Устройство Linux ↗CPU cgroup v2: квота cpu.max и признаки throttling
Прочитайте квоту и период cpu.max, рассчитайте эквивалент CPU и проверьте изменение cpu.stat, не выдавая ограничение за гарантию процессорного времени.
Устройство Linux ↗Лимит задач cgroup v2: pids.current, max и events
Проверьте предел задач группы при отказе fork или создания потока. Отличите количество задач от номера PID и исследуйте рост событий без нагрузочного теста.
Устройство Linux ↗/proc/PID/io: логические байты и обращения к хранилищу
Сравните rchar и read_bytes, снимите два показания счётчиков I/O и оцените разницу без смешения кеша, системных вызовов и реального хранилища.
Устройство Linux ↗/proc/PID/limits: ограничения конкретного процесса
Проверьте soft и hard limits работающего процесса. Отличите предел от текущего расхода и настройки своей оболочки от ограничений запущенного сервиса.
Устройство Linux ↗/proc/meminfo: доступная память, кеш и swap
Прочитайте MemFree и MemAvailable без ложного вывода о нехватке RAM. Сопоставьте кеш и swap, сохранив единицы и область действия наблюдения.
Устройство Linux ↗/proc/uptime: время работы и суммарный простой CPU
Разберите два числа uptime, объясните большой суммарный idle на многоядерной системе и не перепутайте время ядра со временем работы службы.
Устройство Linux ↗/proc/loadavg: очередь задач без подмены процентом CPU
Прочитайте интервалы load average и дробь текущих задач. Разберите высокую нагрузку при ожидании I/O и выберите подходящую следующую проверку.
Устройство Linux ↗/proc/stat: расчёт долей CPU по двум снимкам
Разберите накопленное время CPU в proc/stat. Рассчитайте долю за интервал, исключите повторный учёт guest и явно укажите трактовку idle и iowait.
Устройство Linux ↗/proc/PID/mountinfo: монтирования глазами процесса
Разберите структуру mountinfo, найдите разделитель полей и отличите источник файловой системы от точки монтирования в пространстве выбранного процесса.
Устройство Linux ↗/sys: объекты ядра, классы устройств и ссылки sysfs
Исследуйте связь /sys/class и /sys/devices на примере loopback. Отличите атрибуты ядра от обычных файлов и осматривайте sysfs без изменения настроек.
Устройство Linux ↗Namespaces Linux: сравнение пространств двух процессов
Сравните net, mnt и user namespaces через procfs. Установите границы вывода: общий net namespace не означает общие файлы, права или отдельное ядро.
Устройство Linux ↗PSI Linux: ожидание CPU, памяти и I/O по времени
Прочитайте /proc/pressure, отличите some от full и проценты от микросекунд total. Свяжите давление ресурсов с задержкой нагрузки без ложной диагностики.
Устройство Linux ↗/proc/self: какой процесс вы наблюдаете при чтении
Разберите различие /proc/self и /proc/$$, выберите PID оболочки и получите повторяемое наблюдение без случайной подмены процесса утилитой чтения.
Устройство Linux ↗/proc/PID/status: состояние, идентификаторы и память
Прочитайте status выбранного процесса: отличите PID от PPid, сон от зависания и виртуальный размер от резидентной памяти; проверьте вывод по именам полей.
Устройство Linux ↗/proc/PID/cmdline: границы аргументов и нулевые байты
Исследуйте аргументы процесса без потери границ: прочитайте NUL-разделённый cmdline в Bash и объясните, почему эта строка не является журналом запуска.
Устройство Linux ↗/proc/PID/environ: начальное окружение без утечки секретов
Проверьте одну учебную переменную в начальном окружении процесса. Разберите NUL-разделители и отличие environ от текущих переменных работающей программы.
Устройство Linux ↗/proc/PID/fd: куда направлены открытые дескрипторы
Исследуйте stdin, stdout и stderr через ссылки procfs. Отличите номер дескриптора от пути, распознайте pipe и socket и не прочитайте чужой поток случайно.
Устройство Linux ↗/proc/PID/maps: как читать области виртуальной памяти
Разберите адреса, права и файловые отображения в maps. Научитесь отличать размер области от резидентной памяти и выбирать следующий шаг измерения.
От материала к практике
Выберите следующую тему в каталоге Linux или проверьте знакомые команды в учебном терминале.