Linux

Published on Apr 30, 2017

Linux - введение в операционную систему.

  • Общие концепции
  • Совместимость с posix
  • Иерархическая файловая система

PRESENTATION OUTLINE

Linux

Операционная система, изменившая мир
Photo by Aztlek

Где можно встретить Linux

  • веб-серверы (~85% на апрель 2017 года)
  • wi-fi-роутеры (с торрент-клиентами и др.)
  • мобильные телефоны (android)
  • рабочие станции (были планы перевода госорганов и бюджетных организаций на Linux - частично реализованы)
Photo by ircharizard

Чем хуже Windows?

  • Слишком гибкая - пользователю трудно разобраться
  • Иногда бывают проблемы с оборудованием - это на совести поставщиков
  • Есть миф о проблемах запуска игр - но wine прекрасно с этим справляется
Photo by D4rkL0g

Чем лучше Windows?

  • Свободно и бесплатно распространяется
  • Не отслеживает каждый шаг пользователя (особенно актуально после Windows 10)
  • Расширить и заменить можно всё
  • Нет опасности вирусов (другой контроль запуска и встроенные механизмы ограничения доступа к ресурсам)
Photo by Fábio Telles

Теперь по сути

  • Linux - не операционная система, а только ядро
  • Операционная система включает в себя: загрузчик процессов, компилятор и сборщик, а также системные утилиты: это предоставил фонд GNU
Photo by pursanovd

Linux-ядро - конструктор и может быть собрано под конкретное оборудование

Click to Edit

Внутренняя организация ядра Linux
Photo by Régis Gaidot

Особенности системы

  • Изначально спроектирована, как совместимая с POSIX
  • Создана и продолжает развиваться тысячами разработчиков (в т.ч. независимыми)

Особенности системы

  • Не существует единственного GNU/Linux - есть сотни сборок, различающихся системой загрузки, расположением файлов настройки, управлением пакетами, графической оболочкой и др.
  • Но есть эталонный стандарт - Linux Standard Base (LSB), который определяет необходимый минимум для совместимости сборок

Особенности системы

  • На всех уровнях система модульная и разделена на подсистемы (например: звук, графика, сеть, принтер, сканер) и любая из них может быть отключена или заменена

Особенности системы

  • Система изначально проектировалась как многопользовательская и создана с учётом механизмов разграничения прав (в альтернативном мире они появились только в Windows NT - в файловой системе NTFS)

Эволюция ядра

  • Ядро Linux не только качественно реализует базовые задачи (управление памятью, файловой системой, оборудованием), но и создаёт новые возможности;
  • С версии 3.2 последовательно развивалась идея namespaces и cgroups для изоляции процессов - основа LXC

Что такое POSIX?

  • Стандарт для совместимости переносимых интерфейсов операционных систем
  • Изначально создавался для Unix, частично реализован в Windows
  • Утвержден в ISO/IEC 9945-2003, последняя редакция - в 2016 году
Photo by lumachrome

Основные вопросы POSIX

  • Системный API для управления ресурсами (памятью, процессами, файлами, потоками и др.)
  • Общие требования к утилитам командной строки (формат параметров, синтаксис регулярных выражений и др.) и их перечень
Photo by lumachrome

Основные вопросы POSIX

  • Расширения для многозадачности (синхронизация и обмен данными между процессами и потоками, общая память, управление приоритетами)
  • Стандартное расположение файлов - иерархическая файловая система (FHS)
  • Концепция - всё есть файл
Photo by lumachrome

Каждый каталог имеет своё назначение (стандарт FHS)

Стандарт иерархической файловой системы

  • Файловая система имеет единственный корневой каталог (нет букв дисков)
  • Дополнительные устройства (флэш-накопители, сетевые диски и др.) монтируются в один из каталогов файловой системы

Стандарт иерархической файловой системы

  • Часть каталогов имеют заранее определенное назначение, известное операционной системе
  • Все posix-совместимые системы (включая MacOS) следуют соглашениям FHS

Стандарт иерархической файловой системы

  • /bin - системные утилиты POSIX (не требующие привилегий администратора)
  • /sbin - системные утилиты POSIX (запускаются только администратором)

Стандарт иерархической файловой системы

  • /boot - образ ядра, дополнительный диск с драйверами, настройка загрузки
  • /lib - системные библиотеки и модули ядра (so-библиотеки динамически загружаются при запуске приложений)

Стандарт иерархической файловой системы

  • /etc - файлы настройки подсистем Linux и глобальных настроек приложений
  • /home - рабочие файлы пользователей системы (и настройки приложений для пользователя)
  • /root - рабочие файлы администратора системы

Стандарт иерархической файловой системы

  • /dev - псевдокаталог с указателями на устройства (блочные или последовательные)
  • /proc - псевдокаталог с информацией о запущенных процессах
  • /sys - псевдокаталог с параметрами подсистем ядра (для тонкой настройки)

Стандарт иерархической файловой системы

  • /tmp - каталог для временных файлов
  • /var - каталог для часто изменяемых файлов (например, /var/log сохраняет системные журналы)

Стандарт иерархической файловой системы

  • /media - монтирование сменных носителей (флэш-накопителей, CD/DVD и др.)
  • /mnt - монтирование разделов диска (например, NTFS-раздела), сетевых дисков и т.д.

Стандарт иерархической файловой системы

  • /src - исходные тексты (для системных программ)
  • /include - заголовочные файлы (используются при компиляции исходных текстов программ или ядра)

Стандарт иерархической файловой системы

  • /usr - повторяет корневой каталог, только для уровня пользователя (например, приложения устанавливаются в /usr/bin)

Стандарт иерархической файловой системы

  • Каталоги, использование которой специфично для сборки:
  • /opt - дополнительные приложения, доступные для всех пользователей (например, Java Development Kit)
  • /srv - файлы для серверных приложений (например, веб-сайт)

Основы работы с командной строкой

Bourne Again Shell (BASH)

Командная строка

  • Основной и наиболее эффективный способ взаимодействия с любой Unix-совместимой системой
  • Существует несколько десятков командных оболочек, отличающихся по синтаксису и возможностям разработки сложных программ

Что общего между оболочками?

  • Работа в режиме диалога - вводится команда с клавиатуры, получается ответ текстовым сообщением
  • При выполнении команд (явно или нет) используется и передаётся в запускаемую программа таблица с переменными окружения

Переменная окружения

  • Простейший способ хранения строки, доступной по общеизвестному имени
  • Переменные окружения могут определяться как для всей системы (например, в /etc/profile), так и для отдельного сеанса пользователя

Наиболее важные переменные окружения

  • PATH - список каталогов, в которых выполняется поиск образов программ (разделены через двоеточие)
  • TERM - название зарегистрированной реализации терминала
  • SHELL - путь к процессу оболочки командной строки

Наиболее важные переменные окружения

  • HOME - путь к домашнему каталогу активного пользователя
  • LANG - язык по умолчанию, используемый для отображения сообщений программами
  • PS1 - шаблон для приглашения пользователю от командной оболочки к вводу команд
  • EDITOR - путь к текстовому редактору по умолчанию

Что такое реализация терминала?

  • На самом деле - терминал не просто способ ввода/вывода текста
  • Существуют дополнительные ANSI-последовательности для управления курсором, изменения цвета и, даже, воспроизведения звуков

Наиболее известные реализации терминалов

  • vt100 - исторический терминал производства DEC, поддерживает управление курсором и 16 цветов
  • xterm - расширенные возможности для отображения в графическом режиме (поддержка vt102/vt220)
  • xterm256color - поддержка отображения 256 цветов

Где посмотреть доступные реализации?

  • в /usr/share/terminfo, их более тысячи
  • однако используемый клиент удалённого подключения может и не поддерживать все из них

Попробуем изменить приглашение

  • PS1 поддерживает вставку специальных значений и ANSI-последовательностей
  • Например - \u заменяется на имя пользователя, \e[31m изменяет цвет следующих букв на красный (не забудьте отключить \e[0m

Удалённое подключение - как это?

  • Мы взаимодействуем не с процессом, а с "псевдотерминалом", который или подключен к клавиатуре или передаёт данные в сеть
  • Есть возможность подключения по com-порту или через защищенный канал (например, через протокол ssh)

Удалённое подключение - как это?

  • При локальном доступе к физическому компьютеру обычно создаётся 6 псевдотерминалов (/dev/tty1-6) и один из них активен (/dev/tty)
  • Для SSH-подключений создаются дополнительные терминалы /dev/pts/#

Как изменить переменную окружения?

  • Только для этого процесса: PS1='>'
  • Для этого и всех запущенных из него процессов: export PS1='>'

Как получить значения переменных окружения?

  • env или export (без параметров) - выводит пары название-значение для переменных окружения

Редактирование и история

  • Влево-вправо - перемещение курсора;
  • Ввод символов - вставка или замена;
  • Ctrl+влево-вправо - перемещение по словам
  • Home/End - перемещение в начало/конец строки

Редактирование и история

  • Вверх-вниз - перемещение по истории;
  • Ctrl+r - поиск по истории (далее набираем символы);
  • !! - выполнение последней команды
  • !начало - выполнение последний команды, начинающейся со строки

Редактирование и история

  • Просмотр и изменение истории - history
  • Ограничения: переменная окружения HISTSIZE - максимальное количество команд одного сеанса, HISTFILESIZE - максимальное количество команд истории всех сеансов

Редактирование и история

  • alt-d - удаление слова под курсором
  • alt-t - перестановка слова с предыдущим (ctrl-t переставляет буквы)
  • alt-c - в верхний регистр (alt-l - в нижний)
  • ctrl-L - очистка терминала

Управление выводом на экран и процессами

  • ctrl-C - остановка активного процесса
  • ctrl-S - приостановка прокрутки при выводе процесса (ctrl-Q - возобновление)
  • ctrl-Z - отправка активного процесса в фоновый режим (возобновить - fg)

Основы управления файловой системой

Photo by freedryk

Операции с каталогами и файлами

  • Любая команда выполняется в контексте текущего каталога
  • Изменить каталог можно выполнением команды cd

Изменение каталога

  • Путь к каталогу может задаваться как относительно текущего, так и от корневого каталога - во втором случае он должен начинаться с символа /
  • Компоненты пути разделяются прямым слэшем - /

Изменение текущего каталога

  • Специальные названия:
  • .. - родительский каталог
  • . - текущий каталог
  • / - корневой каталог
  • ~ - домашний каталог активного пользователя
  • Текущий каталог: pwd или PWD (env)

Создание и удаление каталогов

  • mkdir , чтобы создать весь маршрут, при необходимости)
  • rmdir

Создание, копирование и перемещение файлов

  • touch
  • cp
  • mv
  • rm

Операции над группой файлов

  • Можно использовать символы подстановки (маски): вопросительный знак - любой символ (обязательный), звездочка - произвольное количество символов (или пустое)

Упаковка файлов в архив

  • В POSIX определены два типа архивов: tar (более новый, может использоваться с программами сжатия) и cpio (более старый, но используется, например, в rpm)

Просмотр каталога и файлов

  • ls - просмотр списка файлов (есть много опций)
  • cat - вывод содержания файла

Поиск файлов и программ

  • which
  • find - поиск файла (очень много опций по фильтрации и операциям, например может сразу удалить файлы). Например: find /root -name '*' -type f -mtime 5 -print найдёт все файлы, измененные за последние 5 дней

Переадресация вывода

  • Вывод любой команды может быть сохранен в файл. Для этого в конце команды нужно указать символ переадресации > и название файла, например ls >filelist сохранит в указанный файл список файлов и каталогов текущего каталога

Где узнать подробности команд?

  • Для системных и многих прикладных программ устанавливаются man-страницы (в некоторых случаях также info) и параметр --help
  • Для просмотра - man cd или info cd

Домашнее задание

Photo by somegeekintn

Получить доступ к виртуальному стенду

  • Написать на почту zolotov@goroot.ru своё ФИО и желаемый логин
  • После получения пароля проверить возможность доступа к my.goroot.ru:8080 и подключения к консоли контейнера

Изменение приветствия

  • Заменить строку приветствия на имя_пользователя@название_узла, дата_время>, команду отправить в систему тестирования
  • в конце строки должен быть символ >, имя пользователя должно быть выведено красным, название узла - зеленым, а дата-время - подчеркнуты

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

  • Создать в домашнем каталоге /root каталог с название topic1, в нём создать пустой файл homework
  • Переместить файл /etc/demo в homework0 (в том же каталоге).
  • Скопировать файл /etc/skel/demofile в домашний каталог под названием homework1

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

  • Найти созданные в последние 24 часа файлы в /root (с использованием find), команду отправить в систему тестирования
  • Определить местоположение программ: halt, cd, awk и ответы загрузить в систему тестирования

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

  • Получить список каталогов для поиска программы и просмотреть каждый из этих каталогов. Результаты сохранить в различных файлах в каталоге /root (названия загрузите в систему тестирования).

Что почитать?

Photo by FulgentKlutz

Спасибо за внимание

Есть ли у вас вопросы?
Photo by weesen

Friend of Haiku Deck

Haiku Deck Pro User