Недавно мы публиковали подборку книг для Java-разработчиков. Сегодня предлагаем ещё один список, на этот раз для инженеров Linux. Знания и опыт у представителей этой специальности практически всегда очень разносторонние. Но книги помогают повышать квалификацию даже профессионалам с солидным багажом знаний, опыта и скилов, не говоря уже о новичках. Сегодня в подборке — пять хороших книг, на которые стоит обратить внимание.
«Компьютерные сети. Принципы, технологии, протоколы»
Авторы: Олифер В. Г., Олифер Н. А.
В 2022 году исполнилось 20 лет с момента выхода в свет первого издания этой книги. Сейчас это уже 6-е издание, около трети материала в нём — либо новая информация, либо значительно переработанные темы из предыдущих изданий. Пример — раздел «Беспроводные сети» плюс полностью переработанная часть, которая посвящена технологиям первичных сетей SDH, OTN и DWDM.
О книге можно сказать, что она нужна любому инженеру — как опытному, так и новичку. Изложение информации — от простого к сложному. Сначала авторы рассказывают об общих принципах построения сетей, о модели OSI и основных протоколах. Затем идёт более глубокое погружение в такие темы, как маршрутизация и анализ локальных сетей.
Книга предназначена в основном для начинающих специалистов, которым нужна информация о принципах построения компьютерных сетей, а также об особенностях традиционных и перспективных технологий локальных и глобальных сетей. Авторы рассказывают также о способах создания крупных составных сетей и управлении ими.
Но книга будет полезна и профессионалам, которым нужно освежить какие-то моменты в памяти, а что-то дополнительно изучить. К слову, издание рекомендовано Министерством образования и науки Российской Федерации в качестве учебного пособия для студентов высших учебных заведений, обучающихся по направлению «Информатика и вычислительная техника» и по специальностям «Вычислительные машины, комплексы, системы и сети», «Автоматизированные машины, комплексы, системы и сети», «Программное обеспечение вычислительной техники и автоматизированных систем».
Red Hat RHCSA/RHCE 7 Cert Guide: Red Hat Enterprise Linux 7 (EX200 and EX300)
Автор: Сандер Ван Вугт (Sander Van Vugt)
Эта книга есть в библиотеке у многих инженеров Linux, а тем, у кого её нет — очень рекомендуем добавить. Автор обстоятельно рассказывает о Red Hat Enterprise Linux. В книге даётся информация и о базовых вещах, и о более продвинутых нюансах. Начинается разговор с принципов работы в командной строке, создания пользователей и т. п. А затем уже раскрываются более сложные темы, включая управление пакетами, настройку сетей.
Издание разделяется на две части. Во второй речь идёт уже о более глубоких особенностях работы в среде Red Hat Enterprise Linux. Например, о настройке веб-серверов, системах управления базами данных, оптимизации производительности.
Внимательный читатель заметит, что книге уже семь лет. Но актуальности она не потеряла. Автор помогает выявить пробелы в собственных знаниях, получить новую информацию и улучшить практические навыки. В конце каждой главы есть лабораторные работы, помогающие проверить собственные знания и навыки. Всего в книге около 40 практических упражнений.
Mastering Ansible
Авторы: Джеймс Фриман, Джесси Китинг (James Freeman, Jesse Keating)
Эта книга уже для более продвинутых специалистов, чем две предыдущие. Начинающий инженер может и не понять её, если у него не будет достаточного объёма знаний и опыта. Но, с другой стороны, ничто не мешает просмотреть её и понять, подходит или нет.
Рассказывается в книге о работе с распределёнными системами, настройках нескольких машин одновременно. Оптимизировать рабочий процесс помогает система Ansible, предназначенная для сетевых инженеров.
В книге показано, как написать сценарий того, что требуется сделать, а затем запустить сразу на нескольких хостах. Метод помогает работать с 10-50 машинами одновременно, автоматизируя большинство ресурсоёмких тасков.
Прочитавшие книгу говорят, что она реально помогает разобраться с Ansible и, соответственно, сократить затраты времени на выполнение рутинных процедур. Сейчас вышло уже четвёртое издание.
«Kubernetes в действии»
Автор: Марко Лукша
Книга посвящена Kubernetes — открытому программному обеспечению Google для автоматизации развёртывания, масштабирования и управления приложениями. Автор учит использовать Kubernetes для развёртывания распределённых контейнеризированных приложений и делает это неплохо.
Всё начинается с обзора Docker и Kubernetes с постепенным углублением в технологии. В частности, читателю предложат разработать приложения, постепенно добавляя новые возможности и углубляя знания архитектуры и принципа работы Kubernetes.
В ходе чтения стоит обращаться к документации в качестве дополнительного источника информации. В самой книге есть большое количество практических примеров, показано, как Kubernetes устроен внутри, как правильно устанавливать и настраивать сущности. В целом, отличное руководство, которое помогает быстро освоить Kubernetes.
Site Reliability Engineering. How Google Runs Production Systems
Авторы: Бетси Бейер, Крис Джонс, Дженнифер Петофф и Найл Ричард Мёрфи (Betsy Beyer, Chris Jones, Jennifer Petoff and Niall Richard Murphy)
Книга рассчитана уже на опытных специалистов. Новички могут её пролистать, вероятно, многие найдут что-то полезное для себя, но всё же предназначена она для инженеров с большим опытом.
В частности, авторы рассказывают о том, как работать с продакшн-системами, планированием и управлением, как сводить к минимуму вероятность появления сбоев. В книге также изложены принципы работы с отказоустойчивыми решениями в продуктивной среде с реальными приложениями.
Кстати, есть и раздел, в котором рассказывается примерно то же, что в книге Mastering Ansible, но с большим количеством подробностей, с уклоном в отказоустойчивый подход, применяемый в Google. Основной принцип, который проповедуют авторы, — недопущение возникновения проблемы. Конечно, если она уже появилась, её нужно решать, но лучше всего не допускать её совсем. И это не капитанство — авторы действительно неплохо раскрывают тему.
На этом пока всё. Если у вас есть собственные рекомендации книг, которые обязательно нужны инженеру Linux, пишите о них в комментариях — обсудим.
Комментарии (11)
denaturat
04.01.2023 15:56+2ОМГ, Олиферы все ещё в ходу. Прочитавшие последнее издание могут ответить на вопрос ARP это какого уровня протокол? :)
toxella
04.01.2023 16:09+2Лучше уж «сети для самых маленьких»
Олиферы имхо полезны будут если в науку лезть
hiddenman
04.01.2023 16:16+5А я бы еще в подборку добавил последнее издание Робачевского, сам с трудом его нашел, очень маленький тираж был. Чтобы понять внутренности UNIX-а и как там вообще всё работает, что и почему и как появилось, как работает VFS, сокеты, pipes и прочие штуки. А не заучивать команды одной из сборок Linux-а. Бестселлер был в своё время и вроде бы до сих пор ничего лучше не появилось.
Издание 2014 года надо искать, там уже и про Linux и про современные (на то время) вещи так же написано.
Оглавление
Введение
Причины популярности UNIX
Общий взгляд на архитектуру UNIX
Ядро системы
Файловая подсистема
Подсистема управления процессами
Подсистема ввода-вывода
История создания
Исследовательские версии UNIX
Генеалогия UNIX
System V UNIX
System V Release 4 (SVR4)
UNIX компании Berkeley Software Distribution
OSF/1
Версии UNIX, использующие микроядро
Свободно распространяемая система UNIX
Основные стандарты
IEEE и POSIX
ANSI
SVID
Х/Open и SUS
Некоторые известные версии UNIX
Глава 1. Работа в операционной системе UNIX
Файлы и файловая система
Типы файлов
Обычный файл
Каталог
Специальный файл устройства
FIFO (First-In-First-Out) или именованный канал
Связь
Сокеты
Структура файловой системы UNIX
Владельцы файлов
Права доступа к файлу
Дополнительные атрибуты файла
Скрытые специфические атрибуты файлов
Процессы
Программы и процессы
Типы процессов
Системные процессы
Демоны
Прикладные процессы
Атрибуты процесса
Идентификатор процесса Process IDentifier (PID)
Идентификатор родительского процесса Parent Process ID (PPID) —
Приоритет процесса (Nice Number)
Терминальная линия (TTY)
Реальный (RID) и эффективный (EUID) идентификаторы пользователя
Реальный (RGID) и эффективный (EGID) идентификаторы группы
Жизненный путь процесса
Сигналы
Устройства
Файлы блочных устройств
Файлы символьных устройств
Мнемоника названий специальных файлов устройств в файловой системе UNIX
Пользователи системы
Атрибуты пользователя
Поле name
Поле passwd-encod
Поле UID
Поле GID
Поле comments
Поле home-dir
Поле shell
Пароли
Стандартные пользователи и группы
Пользовательская среда UNIX
Командный интерпретатор shell
Синтаксис языка Bourne shell
Общий синтаксис команд
Именованные переменные
Встроенные переменные
Перенаправление ввода-вывода
Встроенные функции
Подстановки, выполняемые командным интерпретатором
Система управления заданиями
Основные утилиты UNIX
Утилиты для работы с файлами
Утилиты для управления процессами
Заключение
Глава 2. Среда программирования UNIX
Программный интерфейс ОС UNIX
Системные вызовы и функции стандартных библиотек
Обработка ошибок
Создание программы
Исходный текст
Заголовки
Компиляция
Форматы исполняемых файлов
Формат a. out
Формат ELF
Формат COFF
Выполнение программы в операционной системе UNIX
Запуск С-программы
Завершение С-программы
Работа с файлами
Основные системные функции для работы с файлами
Функция ореп(2)
Функция creat(2)
Функция close(2)
Функции dup(2) и dup2(2)
Функция lseek(2)
Функция read(2) и readv(2)
Функции write(2) и writev(2)
Функция pipe(2)
Функция fcntl(2)
Стандартная библиотека ввода-вывода
Связи
Файлы, отображаемые в памяти
Владение файлами
Права доступа
Перемещение по файловой системе
Метаданные файла
Процессы
Идентификаторы процесса
Выделение памяти
Создание процессов и управление ими
Сигналы
Надежные сигналы
Группы и сеансы
Текущие и фоновые группы процессов
Ограничения
Примеры программ
Демон
Командный интерпретатор
Заключение
Глава 3. Подсистема управления процессами
Основы управления процессом
Структуры данных процесса
Состояния процесса
Принципы управления памятью
Виртуальная и физическая память
Сегменты
Страничный механизм
Адресное пространство процесса
Управление памятью процесса
Области
Замещение страниц
Управление памятью в ОС Linux
Планирование выполнения процессов
Обработка прерываний таймера
Отложенные вызовы
"Будильники" (алармы)
Контекст процесса
Принципы планирования процессов
Планирование выполнения процессов в ОС Linux
Создание процесса
Запуск новой программы
Выполнение в режиме ядра
Сон и пробуждение
Завершение выполнения процесса
Сигналы
Группы и сеансы
Управление сигналами
Отправление сигнала
Доставка и обработка сигнала
Взаимодействие между процессами
Каналы
FIFO
Идентификаторы и имена в IPC
Сообщения
Семафоры
Разделяемая память
Межпроцессное взаимодействие в BSD UNIX. Сокеты
Программный интерфейс сокетов
Пример использования сокетов
Сравнение различных систем межпроцессного взаимодействия
Заключение
Глава 4. Файловая подсистема
Базовая файловая система System V
Суперблок
Индексные дескрипторы
Имена файлов
Недостатки и ограничения
Файловая система BSD UNIX
Каталоги
Файловая система ext2fs
Журнальные файловые системы
Файловая система ext3fs
Файловая система ufs2
Архитектура виртуальной файловой системы
Виртуальные индексные дескрипторы
Монтирование файловой системы
Трансляция имен
Доступ к файловой системе
Файловые дескрипторы
Файловая таблица
Блокирование доступа к файлу
Буферный кэш
Внутренняя структура буферного кэша
Операции ввода-вывода
Кэширование в SVR4
Целостность файловой системы
Заключение
Глава 5. Подсистема ввода-вывода
Драйверы устройств
Типы драйверов
Базовая архитектура драйверов
Файловый интерфейс
Клоны
Встраивание драйверов в ядро
Блочные устройства
Символьные устройства
Интерфейс доступа низкого уровня
Буферизация
Архитектура терминального доступа
Псевдотерминалы
Подсистема STREAMS
Архитектура STREAMS
Модули
Сообщения
Типы сообщений
Передача данных
Управление передачей данных
Драйвер
Головной модуль
Доступ к потоку
Создание потока
Управление потоком
Мультиплексирование
STREAMS в ОС Linux
Заключение
Глава 6. Поддержка сети в операционной системе UNIX
Семейство протоколов TCP/IP
Краткая история TCP/IP
Архитектура TCP/IP
Общая модель сетевого взаимодействия OSI
Протокол IP
Адресация
Протокол IP версии 6
Формат заголовка IPv6
Адресация IPv6
Протоколы транспортного уровня
User Datagram Protocol (UDP)
Transmission Control Protocol (TCP)
Состояния TCP-сеанса
Передача данных
Стратегии реализации TCP
Синдром "глупого окна"
Медленный старт
Устранение затора
Повторная передача
Программные интерфейсы
Программный интерфейс сокетов
Программный интерфейс TLI/XTI
Программный интерфейс высокого уровня. Удаленный вызов процедур
Передача параметров
Связывание
Обработка особых ситуаций
Семантика вызова
Представление данных
Сеть
Как это работает?
Поддержка сети в BSD UNIX
Структуры данных
Маршрутизация
Реализация TCP/IP
Модуль IP
Модуль UDP
Модуль TCP
Поддержка сети в UNIX System V
Интерфейс TPI
Взаимодействие с прикладными процессами
Интерфейс DLPI
Доступ к среде передачи
Протокол LLC
Инкапсуляция IP
Внутренняя архитектура
Примитивы DLPI
Заключение
Приложения
Приложение А. Дополнительная информация об операционной системе UNIX
Книги
Информация в Интернете
Приложение Б. Глоссарий
Предметный указателmdenaturat
05.01.2023 12:00Мне ещё в свое время зашла книга К. Петцке по системному программированию под Линукс. Правда давно это было, но внутреннее устройство ведра, азы, расставила в голове.
Thomas_Hanniball
04.01.2023 18:37+1Для начинающих пользователей Linux рекомендую книгу «LINUX. Полное руководство по работе и администрированию.» Колесниченко Д. www.chitai-gorod.ru/catalog/book/1271073
Там вся основа Linux без лишнего углубления в детали, что будет очень полезно новичкам.AlexGorky
04.01.2023 19:51+2У Дениса Колесниченко огромное количество книг по Линуксу. Рекомендую.
А ещё рекомендую Уильям Шоттс - Командная строка Линукс, 2-е издание.
A1EF
05.01.2023 00:55+1Очень удивлён рекомендацией опусов Колисниченко. Нет, я может сужу поверхностно, но беглое знакомство "по диагонали" с разными его книгами вызывает ощущение очень фрагментарных неглубоких сборников пересказов manpages и скриншотиков графических приложений в разных DE. Денис их периодически актуализирует и новые издания зачем-то снова оказываются на полках, но кто их читает - для меня загадка.. Это может быть интересно разве что совсем новичкам, но я даже им не советовал бы тратить на это своё время.
FlashHaos
04.01.2023 21:30+2Эй, Сбер, вы бы хоть у своих же линуксовых инженеров спросили. Может чего-то путного посоветовали, кроме рандомных книг из топа покупок какого-то книжного магазина.
Сандер Ван Вугт, конечно, хорош. Но хорош он для подготовки к экзамену RHCSA, а как самостоятельное пособие - сомнительно. И кстати, давно есть уже издание под RHEL8, и ремарку "книге уже семь лет" можно убрать.
A1EF
05.01.2023 01:25+2Не хотел комментировать пост (подборка вопиюще нелепая, но люди может старались..), однако тут в комментариях уже назвали несколько отличных книг - не могу удержаться и не докинуть в копилочку:
Внутренне устройство Linux. Есть две разных книги с таким названием -- обе хороши. Одна написана Дмитрием Кетовым и я считаю что она даже может считаться некоторым "логическим продолжением" Операционной системы UNIX Робачевского, но с меньшим погружением "в исходники", зато более актуальным и целиком посвященным только системам на базе ядра Linux. Вторая же -- перевод How Linux Works Брайяна Уорда. И если первая книга больше сконцентрирована на ядре, то вторая уже скорее комплексно освещает устройство современных дистрибутивов: загрузчики, системы инициализации, пакетные менеджеры, подсистема PAM и т.п.
Введение в ОС Linux. Курс лекций. Учебное пособие (2-е издание). Увы, несколько устаревшая, но довольно любопытная книга преподавателя факультета ВМиК МГУ и одного из мейнтейнеров ALT Linux Георгия Курячего. Вот как раз её я вполне мог бы порекомендовать новичкам: книга описывает базу, которая устаревает не так быстро и кроме того официально доступна в сети.
RomeoGolf
06.01.2023 09:47Во-первых, у вас поломатая ссылка на подборку в начале статьи. Ведет не на подборку, а на блог компании. Ну, это ладно.
Во-вторых, складывается ощущение, что в сбер просела тема линукса, как учить не знают, где учебников набрать — тоже непонятно. О! Идея — вбросим статью с полубредовой подборкой, а в комментариях накидают хороших книг!
Добавлю от себя тогда, что мне было полезно (хоть и не linux-инженер):
Mendel Cooper «Advanced Bash-Scripting Guide» (есть в переводе Андрея Киселева)
Даниэл Дж. Баррет «Linux Comand Book (Основные команды Linux)» совсем уж поначалу полезно держать под рукой
Эви Немет, Гарт Снайдер, Трент Хейн «Руководство администратора Linux» — показалось довольно неплохо, но тут я не спец.
Osamu Aoki «Справочник по Debian» (раз уж в статье упомянут Red Hat) — оно, конечно, смахивает на изложение манов, но уж как минимум не хуже Колесниченко.
Ну, и маны, разумеется — ложнами, пачками, ведрами…
Voldemarius
Какая-то странная подборка. Не каждому Linux-инженеру нужны знания по Docker и Kubernetes. Не помешают, но уж точно не в первую очередь. А вот Немет, Снайдер, Хейн: Unix и Linux. Руководство системного администратора - просто необходима, причем в первую очередь.