titleKey = "MasteringAnsible2nd" titleKeyLow = "mastering-ansible-2nd" , Главное пособие Unix. 3 ред.

Главное пособие Unix. 3 ред.

Саид Мансур Сарвар

Роберт М. Коретски

 

Первая публикация на английском языке: 10 октября 2016

Ссылка на продукт:

This book contains information obtained from authentic and highly regarded sources. Reasonable efforts have been made to publish reliable data and information, but the author and publisher cannot assume responsibility for the validity of all materials or the consequences of their use. The authors and publishers have attempted to trace the copyright holders of all material reproduced in this publication and apologize to copyright holders if permission to publish in this form has not been obtained. If any copyright material has not been acknowledged please write and let us know so we may rectify in any future reprint.

Except as permitted under U.S. Copyright Law, no part of this book may be reprinted, reproduced, transmitted, or utilized in any form by any electronic, mechanical, or other means, now known or hereafter invented, including photocopying, microfilming, and recording, or in any information storage or retrieval system, without written permission from the publishers.

For permission to photocopy or use material electronically from this work, please access www.copyright.com (http://www.copyright.com/) or contact the Copyright Clearance Center, Inc. (CCC), 222 Rosewood Drive, Danvers, MA 01923, 978-750-8400. CCC is a not-for-profit organization that provides licenses and registration for a variety of users. For organizations that have been granted a photocopy license by the CCC, a separate system of payment has been arranged.

Trademark Notice: Product or corporate names may be trademarks or registered trademarks, and are used only for identification and explanation without intent to infringe.

Опубликовано CRC Press

Taylor & Francis Group

6000 Broken Sound Parkway NW, Suite 300

Boca Raton, FL 33487-2742

ISBN-13 978-1-4822-3358-2

www.taylorandfrancis.com

www.crcpress.com

2017-07-17

 Состав исполнителей

Авторы
Саид Мансур Сарвар
Роберт М. Коретски
Рецензент
Редактор выпуска
Редактор разработки содержания
Технический редактор
Литературный редактор
Координатор проекта
Корректор
Составитель указателя
Координатор производства
Графика

 Об авторах

Саид Мансур Сарвар

Роберт М. Коретски

 Рецензент

.

 www.crcpress.com

 Содержание

Введение
Предисловие к Третьему изданию
Благодарности Третьего издания
Предисловие ко Второму изданию
Благодарности Второго издания
Персональные благодарности
Глава 1. Обзор операционных систем
Введение
Что такое операционная система?
Службы операционной системы
Сопоставление CLI и GUI
Типы операционных систем
Семейство Unix
Архитектура программного обеспечения Unix
Уровень драйверов устройств
Ядро Unix
Интерфейс системных вызовов
Библиотеки языков программирования
Оболочка Unix
Приложения
Разработка операционной системы Unix
С чего всё начиналось
Исследование операционной системы
AT&T System V
Berkeley Software Distributions
История оболочек
Разработки настоящего и будущего
Различия в операционных системах Unix
Выводы
Вопросы и задачи
Глава 2. "Быстрый старт" в операционную систему Unix
Введение
Структура команд Unix
Регистрация в системе и выход из неё
Автономная регистрация подключения в PC-BSD и Solaris
Подключение через PuTTY из компьютера Microsoft Windows
Соединения через клиента SSH между машинами Unix
Команды сопровождения файлов и подсказка применения команд Unix
Структура файла и каталога
Просмотр содержимого файлов
Создание, удаление и управление файлами
Создание, удаление и управление каталогами
Получение подсказки через команду Man
Прочие методы получения подсказки
Команды утилит
Исследование установок системы
Команды печати и общих утилит
Команды взаимодействия
Псевдонимы команд
Введение в оболочки Unix
Различные оболочки Unix
Программы оболочек
Какая оболочка подходит вам?
Способы замены вашей оболочки
Файлы запуска оболочки и переменные окружения
Метасимволы оболочки
Команды sudo и su
Выводы
Вопросы и задачи
Глава 3. Редактирование текстовых файлов
Введение и быстрый старт
Быстрый старт: самый простой из путей через эти редакторы
Первые комментарии в редакторах Unix
Применение текстовых редакторов
Использование редакторов vi, vim и gvim
Основы создания, изменения, исполнения файла сценария оболочки
Как начать, сохранить файл и выйти
Формат команд vi и режимы операций
Команды перемещения курсора и изменений
Выдернуть и поместить (скопировать и вставить) и подстановка (поиск и замена)
vim и gvim
Изменение поведения vi, vim и gvim
Исполнение команд оболочки из vi, vim и gvim
Макросы клавиатуры vi, vim и gvim
Редактор Emacs
Запуск Emacs, экран отображения Emacs, общие понятия и свойства Emacs
Как применять Emacs для выполнения создания, изменения и исполнения файла сценария оболочки
Посещение файлов, сохранение файлов и выход
Команды перемещения курсора и редактирования
Макросы нажатий клавиш
Вырезка или копирование со вставкой, а также поиск и замена
Как выполнять полное графическое редактирование с помощью GNU Emacs
Изменение файлов данных
Как начать, сохранить файл и выйти из графического Emacs
Графические меню Emacs
Создание программ C и их изменение
Работа со множеством буферов
Изменение поведения Emacs
Таблицы команд vi и Emacs
Выводы
Вопросы и задачи
Глава 4. Структура файлов и файловой системы
Введение
Концепция файла Unix
Типы файлов
Простой/ обыкновенный файл
Каталог
Файл ссылки
Специальный файл (Устройство)
Именованный конвейер (FIFO)
Сокет
Структура файловой системы
Организация файловой системы
Домашний и текущий рабочий катлоги
Пути имён: абсолютные и относительные
Некоторые стандартные катлоги и файлы
Перемещение по файловой структуре
Определение абсолютного имени пути для вашего домашнего каталога
Посмотр файловой системы
Создание файлов
Создание и удаление каталогов
Определение атрибутов файлов
Определение типа файла и его содержимого
Стандартные файлы и файловые дескрипторы
Маркер конца файла (eof)
Файловая система
Выводы
Вопросы и задачи
Глава 5. Безопасность файла
Введение
Защита на основе пароля
Основанная на шифровании защита
Основанная на полномочиях доступа защита
Типы пользователей
Типы полномочий операций/ доступа к файлам
Полномочия доступа к каталогам
Определение привелегий файлового доступа и их изменение
Определение привелегий файлового доступа
Изменение привелегий файлового доступа
Привелегии доступа для каталогов
Установленные по умолчанию привелегии доступа к файлам
Биты специального доступа
Бит SUID
Бит SGID
Sticky бит
Выводы
Вопросы и задачи
Глава 6. Основы обработки файлов
Введение
Просмотр содержимого текстовых файлов
Просмотр файла целиком
Просмотр по странице файла за раз
Просмотр заголовка и хвоста файла
Копирование, перемещение и удаление файлов
Копирование файлов
Перемещение файлов
Удаление/ уничтожение файлов
Определение размера файла
Запись в конец файла
Объединение файлов
Сравнение файлов
Обнаружение и удаление повторов внутри текстовых файлов
Печать файлов и управление заданиями печати
Механизм печати файлов Unix
Печать файлов
Поиск состояния ваших запросов на печать
Прекращение заданий на печать
Выводы
Вопросы и задачи
Глава 7. Расширенная обработка файла
Введение
Сжатие файлов
Команда compress
Команда uncompress
Команда gzip
Команда gunzip
Команда gzexe
Команды zcat и zmore
Сортировка файлов
Поиск для команд и файлов
Регулярные выражения
Поиск файлов
Вырезка и вставка
Кодировка и декодирование
Шифрование и дешифрация
Выводы
Вопросы и задачи
Глава 8. Совместное использование файла
Введение
Дублирование совмесно используемого файла
Общие регистрации для участников команды
Установка надлежащих полномочий на совместно используемые файлы
Общие группы для участников команды
Совместное использование файлов по ссылкам
Жёсткие ссылки
Недостатки жёстких ссылок
Символические/ мягкие ссылки
За и против символических ссылок
Выводы
Вопросы и задачи
Глава 9. Перенаправление и конвейеры
Введение
Стандартные файлы
Перенаправление ввода
Перенаправление вывода
Соединение перенаправлений ввода и вывода
Перенаправление ввода/ вывода с помощью дескрипторов файлов
Перенаправление стандартных ошибок
Перенаправление stdout и stderr в одной команде
Перенаправление stdin, stdout и stderr в одной команде
Перенаправление без перезаписи содержимого файла (запись в конец)
Конвейеры Unix
Соединение перенаправления и конвейеризации
Вывод и перенаправление ошибок в оболочке C
Возобновление ввода/ вывода и перенаправление ошибок
FIFOS
Выводы
Вопросы и задачи
Глава 10. Процессы
Введение
Планирование ЦПУ: одновременное исполнение множества процессов
Состояния процесса Unix
исполнение команд оболочки
Атрибуты процесса
Статическое отображение атрибутов процесса
Динамическое отображение атрибутов процесса
Процесс и управление заданием
Приоритетные и фоновые процессы и соответствующие команды
Демоны Unix
Последовательное и одновременное исполнение команд
Нештатное прекращение команд и процессов
Иерархия процессов в Unix
Выводы
Вопросы и задачи
Глава 11. Сетевые среды и межсетевое взаимодействие
Введение
Вычислительные сети и межсетевое взаимодействие
Основание для вычислительных сетей и межсетевого взаимодействия
Модели сетевых сред
Комплект TCP/IP
TCP и UDP
Маршрутизация прикладных данных: IP
Символические имена
Трансляция имён в IP адреса: DNS
RFC (запрос на комментарий)
Интернет службы и протоколы
Модель программирования клиент- сервер
Прикладное программное обеспечение
Отображение имени хоста
Отображение списка пользователей с применением хостов и сетей
Отображение состояния хоста в сети
Проверка сетевого соединения
Отображение информации о пользователях
Удалённая регистрация
Удалённое исполнение команд
Файловый обмен
Удалённое копирование
Безопасная оболочка и связанные с ней команды
Интерактивный чат
Отслеживание маршрута с одной площадки к другой
Важные организации Интернета
Веб ресурсы
Выводы
Вопросы и задачи
Глава 12. Введение в программирование в оболочке Bourne
Введение
Выполнение сценария оболочки Bourne
Переменные оболочки и относящиеся к ним команды
Чтение и запись переменных оболочки
Подстановка команд
Экспорт окружения
Сброс переменных
Создание переменных определённых только на чтение
Чтение из стандартного ввода
Передача аргументов в сценарий оболочки
Комментарии и заголовки программы
Управление потоком команд
Оператор if-then-elif-else-fi
Оператор for
Оператор while
Оператор until
Команды break и continue
Оператор case
Группирование команд
Выводы
Вопросы и задачи
Глава 13. Расширенное программирование в оболочке Bourne
Введение
Обработка численных данных
Документ HERE
Прерывание процесса (SIGNAL)
Команда exec и файловый ввод/ вывод
Исполнение команд (или сценариев) на месте их родительского процесса
Файловый ввод/ вывод посредством команды exec
Функции в оболочке Bourne
Причины применения функций
Определение функций
Запуск/ вызов функций
Несколько дополнительных примеров функций
Отладка программ оболочки
Выводы
Вопросы и задачи
Глава 14. Введение в программирование в оболочке C
Введение
Исполнение сценария оболочки C
Переменные оболочки и связанные команды
Чтение и запись переменных оболочки
Подстановка команд
Экспорт окружения
Сброс переменных
Чтение из стандартного ввода
Передача аргументов в сценарии оболочки
Коментарии и заголовки программ
Команды управления потоком
Оператор if-then-elif-else-fi
Оператор foreach
Оператор while
Оператор until
Команды break и continue
Оператор switch
Выводы
Вопросы и задачи
Глава 15. Расширенное программирование в оболочке C
Введение
Обработка численных данных
Обработка массивов
Документ HERE
Прерывание процесса (SIGNAL)
Отладка программ оболочки
Выводы
Вопросы и задачи
Глава 16. Python
Введение
Модель данных программ Python
Основной эталон Python
Основной перечень терминов Python
Иерархия стандартных типов Python
Основные допущения которые мы делаем
Исполнение Python
ПРименение Python
Как устанавливать Python в системах PC-BSD и Solaris
Установка Python в PC-BSD
Установка Python в Solaris
Основы установки и синтаксиса и получение помощи
Печать текста, коментариев, чисел, групповых операторов и выражений
Переменные
Функции
Условное исполнение
Детерминированные и неопределённые структуры повтора и рекурсии
Файловый ввод и вывод
Списки и функции списков
Строки, преобразования форматов строк и последовательные операции
Кортежи
Множества
Генераторы
Словари
Сопрограммы
Объекты и классы
Исключения
Модули, глобальные и локальные области действия в функциях
Практические примеры
Другой способ написания файлов сценариев оболочки
Основы сопровождения файлов пользователя
GUI Python и виджеты Tkinter
Мнотопоточная параллельность в Python
Общение потоков: проблема применения условных переменных поставщик- потребитель
Выводы
Вопросы и задачи
Глава 17. Инструменты Unix для разработки ПО
Введение
Языки вычислительного программирования
Процесс компиляции
Жизненный цикл инженерии ПО
Инструменты генерации программ
Создание исходных файлов C
Снабжение исходных файлов C отступами
Компиляция программ C, С++ и Java
Обработка ПО на основе модулей C
Построение файлов объектов в библиотеку
Работа с библиотеками
Управление версиями
Инструменты статического анализа
Проверка кода на переносимость
Измерения исходного кода
Инструменты динамического анализа
Отладка исходного кода
Производительность в реальном времени
Веб ресурсы
Выводы
Вопросы и задачи
Глава 18. Системное программирование I: Управление файловой системой
Введение
Что такое системное программирование?
Точки входа в ядро ОС
Основы системных вызовов
Что такое системный вызов
Типы системных вызовов
Исполнение системного вызова
Файлы: крупным планом
Дескрипторы файлов, таблицы файловых дескрипторов, таблицы файлов и таблицы Inode
Почему две таблицы?
Основы парадигмы файлового ввода/ вывода
Сопоставление стандартного ввода/ вывода с низкоуровневым
Стандартная библиотека C
Ввод/ вывод файловых данных при помощи стандартной библиотеки C
Ввод/ вывод низкого уровня в Unix через системные вызовы
Отказ системного вызова и обработка ошибок
Манипулирование файлами
Открытие и создание файла
Закрытие файла
Чтение из файла
Запись в файл
Позиционирование файлового указателя: Случайный доступ
Усечение файла
Удаление файла
Получение атрибутов файла из INODE
Структура stat
Заполнение структуры stat системными вызовами
Отображение атрибутов файла
Доступ к атрибутам файла и манипулирование ими
Перезапуск системных вызовов
Системные вызовы для манипулирования каталогами
Важные веб ресурсы
Выводы
Вопросы и задачи
Глава 19. Системное программирование II: Управление процессами и обработка сигналов
Введение
Процессы и потоки
Что такое процесс?
Блок управления процессом
Образ памяти процесса (Адресное пространство процесса)
Дисковый образ процесса
Что такое поток?
Унифицированность и различия между процессами и потоками
Общие данные для потоков и проблема критической секции
Концепции управления процесса
Получение ID процесса и родительский ID процесса
Создание клона процесса
Отчёт состояния родительского процесса
Сбор состояний дочерних процессов
Перезапись образа процесса
Создание зомби процесса
Прекращение процесса
Таблица процессов и файловых дескрипторов
Совместное использование файлов процессами
Дублирование дескриптора файла
Привлечение внимания процесса: сигналы Unix
Что такое сигнал?
Перехват сигналов
Установка предупреждения
Отправка сигналов
Важные веб ресурсы
Выводы
Вопросы и задачи
Глава 20. Системное программирование III: Взаимодействие процессов
Введение
IPC: каналы и типы взаимодействия
IPC: важные системные и библиотечные вызовы, структуры данных, макросы файлы заголовка
Порядок байт
Модель клиент- сервер
Простейшие формы взаимодействия
Взаимодействие через конвейеры
Взаимодействие между не связанными процессами в одном и том же компьютере
Взаимодействие между не связанными процессами в разных компьютерах
Взаимодействие на базе сокетов
Создание сокета
Домены и взаимодействие на базе сокета
Типы взаимодействия с применением сокета
Адрес сокета
Важные структуры данных и связанные с ними вызовы функций
Привязка адреса к сокету
Разрешение сокету серверной стороны ожидания запросов на соединение от клиентов
Отправка запроса на соединение процессу сервера
Приём запроса клиента на соединение
Закрытие сокета
Собираем всё вместе: Пример ПО клиент- сервер ориентированного на соединение
Типы серверов на основе сокетов
Алгоритмы и примеры для ПО клиент- сервер на основе сокетов
Итеративная модель клиент- сервер без соединения
Итеративная модель клиент- сервер с переключаемым соединением
Итеративная модель клиент- сервер, ориентированная на разовое соединение
Итеративная модель клиент- сервер, ориентированная на соединение
Параллельная модель клиент- сервер без соединения
Параллельная модель клиент- сервер, ориентированная на соединение
Сопоставление синхронного и асинхронного ввода/ вывода: системный вызов SELECT()
Суперсервер Unix: INETD
Управление inetd в Solaris через возможности управления службами
Одновременные клиенты
Веб ресурсы
Выводы
Вопросы и задачи
Глава 21. Системное программирование IV: Практические соображения
Введение
Системные вызовы перезапуска
Системные вызовы сохранения потока
Выполнение процесса в фоновом режиме: демоны
Игнорирование сигналов
Изменение UMASK
Исполнение отдельной копии программы
Размещение демона
Отсоединение терминала от демона
Изменение текущего рабочего каталога
Закрытие унаследованныз стандартных дескрипторов и открытие стандартных дескрипторов
Ожидание завершения всех дочерних процессов
Законченный пример сервера
Структура промышленного сервера
Веб ресурсы
Выводы
Вопросы и задачи
Глава 22. Расширенное программирование в оболочке Bourne
Введение
Модель взаимодействия прикладного ПО пользователя
Основы системы X Window
На что похожа система X Window и какие преимущества она имеет?
Ключевые компоненты взаимодействия: события и запросы
Роль диспетчера окон в интерфейсе пользователя и FVWM для PC-BSD
Персонализация системв X Window и FVWM
Диспетчер рабочего стола KDE4
Регистрация и выход из системы
Панель KDE4
Добаволение иконки рабочего стола и запуск приложения
Диспетчер окон KDE4
Системные установки KDE4
Управление файлами в KDE4 при помощи Dolphin
Создание прикладных программ клиента системы X Window
Структура прикладной программы клиента и модель разработки
Сопоставление Xlib и XCB
Xlib
Использование XCB
Применение инструментария Qt
Выводы
Вопросы и задачи
Глава 23. Основы системного администрирования Unix
Введение
Выполнение свежей установки из ISO и предварительная настройка системы
Рекомендации предварительной установки
GUI установка PC-BSD
Постустановочная настройка
GUI установка Solaris
Администрирование системных служб, процедуры загрузки и останова
Администрирование пользователей
Добавление и удаление пользователя в PC-BSD через текстовый интерфейс
Добавление/ удаление и сопровождение пользователей и групп через GUI интерфейс в PC-BSD
Добавление/ удаление и сопровождение пользователей и групп через текстовый интерфейс в Solaris
Добавление жёсткого диска в систему
Рекомендации предварительной установки при добавлении новых дисковых устройств
Простой и быстрый способ обнаружения имён логических устройств дисков на самом деле установленных в вашей системе
Добавление нового диска в вашу систему
Добавление принтера в систему
Исследование вашего принтера
Добавление принтера
Добавление принтера в Solaris
Стратегии и техники резервного копирования файловой системы
Конспект стратегии и обзор возможностей резервного копирования файлов
tar и gtar
Прочие средства архивирования и резервного копирования Unix
Модернизация системы и обновления ПО с помощью диспетчера пакетов
Модернизация операционной системы в Solaris
Обновление и установка пакетов прикладных программ, а также установка новых пакетов прикладных программ в Solaris
Модернизация операционной системы в PC-BSD
Обновление и установка пакетов прикладных программ, а также установка новых пакетов прикладных программ в PC-BSD
Мониторинг производительности системы и ПО
Управление процессом и памятью
Управление использованием диска
Настройка сетевой среды
Практическое ведение журнала системного администрирования и функция syslog()
Безопачсность системы
Аутентификация на основе пароля
Управление доступом: DAC (дискретность), MAC (принудительность) и RBAC (основанность на ролях)
Применение ACL в PC-BSD
Обнаружение вторжений и системы обнаружения проникновений
Межсетевой экран системы
Методологии виртуализации
Выводы
Вопросы и задачи
Глава 24. Администрирование и применение ZFS
Введение
Синтаксис команд zpool и zfs
Терминология ZFS
Как работает ZFS
Важные понятия ZFS
Пример пулов и файловых систем ZFS: использование команд zpool и zfs
Простой и быстрый способ обнаружения имён логических устройств дисков на самом деле установленных в вашей системе
Основные примеры ZFS
Команды и операции ZFS
Категории команд и основные определения
Пулы ZFS и команда zpool
Команды файловой системы ZFS и команда zfs
Резервное копирование ZFS при помощи ZFS snapshot
Примеры snapshot
zfs rollback
Клонирование/ продвижение
Переименование файловой системы
Сжатие файловой системы
Пример сценария оболочки Bourne для инкрементального резервного копирования ZFS
Использование ACL и атрибутов для безопасности файлов ZFS Solaris
Модель ACL Solaris
Установка ACL на файлы ZFS
Установка наследования ACL на файлах ZFS
Выводы
Вопросы и задачи
Глава 25. Методологии виртуализации
Введение в методологии виртуализации и основа
Виртуализация сетевых адресов в PC-BSD и Solaris
PC-BSD Jails через iocage
Введение в iocage, краткий обзор и применение
Основы применения
Сетевые среды iocage
Типы Jail
Практические приёмы
расширенное использование
Как создавать и применять шаблоны
Создание пакета Jail
Установка iocage и рабочие примеры
Методы зон виртуализации Solaris
Модель состояния неглобальных зон
Воздействующие на состояние зон команды
Создание зон Solaris
Установка сервера веб приложений в зоне
VirtualBox
Установка и исполнение VirtualBox в ОС PC-BSD хоста
Установка и исполнение Solaris VirtualBox
Установка гостевой ВМ
Обеспечение безопасности сервера FTP в гостевом VirtualBox
Установка PC-BSD или Solaris в качестве гостевой ВМ в хосте Linux или Windows
Выводы
Вопросы и задачи
Список терминов
Указатель

 Введение

.

 Предисловие к Третьему изданию

 Благодарности Третьего издания

 Предисловие ко Второму изданию

 Персональные благодарности

 Благодарности Второго издания