В какое десятилетие была разработана первая версия ОС UNIX: 1960-1970, 1970-1980, 1980-1990, 1990-2000?
В какое десятилетие было разработано ядро ОС Linux: 1960-1970, 1970-1980, 1980-1990, 1990-2000?
В какое десятилетие был основан проект GNU: 1960-1970, 1970-1980, 1980-1990, 1990-2000?
Укажите ключевые отличия между ОС UNIX и ОС семейства GNU/Linux.
На каких условиях можно применять ОС семейства GNU/Linux: бесплатно для ознакомления, бесплатно для некоммерческого условия, бесплатно для коммерческого использования.
Какие ограничения существуют в применении ОС данного семейства?
Какие ограничения накладывают лицензии BSD и GPL? Почему компаниям выгодно использовать данные лицензии при разработке ПО? Почему это может быть проблемой?
Являются ли ОС семейства GNU/Linux исключительно решением для использования на серверных устройствах? Можно ли использовать их на других устройствах?
Каким образом можно получить доступ к ОС GNU/Linux в рамках других распространённых настольных ОС: Windows, macOS?
Каким образом происходит установка дистрибутива GNU/Linux Debian в рамках виртуальной машины VirtualBox?
Как можно получить доступ к командному интерфейсу GNU/Linux?
Тема «Базовые принципы использования командного интерфейса»
#
В каком формате происходит взаимодействие пользователя и вычислительной системы при использовании командного интерфейса?
Что такое командный интерпретатор? Перечислите известные вам командные интерпретаторы.
Что такое эмулятор терминала? Перечислите известные вам эмуляторы терминала.
Что такое приглашение к вводу? Зачем оно применяется в командном интерфейсе? В каких приложениях данный подход рекомендуется использовать?
Какую информацию можно извлечь из базового приглашения интерпретатора Bash?
Опишите основной цикл взаимодействия с командным интерпретатором.
Какой вывод следует ожидать от команды, которая успешно выполнили своё действие? Какой вывод следует ожидать от команды, которая завершила свою работу ошибочно? Как можно проверить результат работы последней выполненной команды?
Какие задачи можно решать с помощью командного интерфейса? Какие задачи невозможно решить с помощью данного интерфейса, почему?
Тема «Устройство файловой системы и основные команды для работы с файлами»
#
Каким образом устроено дерево каталогов ОС GNU/Linux и ОС семейства Windows? Чем они схожи, в чём принципиальное отличие между ними?
Что обозначает термин текущий рабочий каталог? К какой части вычислительной системы данный термин применим?
Для чего используются специальные каталоги «..» и «.»? В какой момент времени они создаются?
Что такое относительный путь? Что такое абсолютный путь? Как эти понятия связаны с понятием текущего рабочего каталога?
Какая команда может быть использована для получения текущего рабочего каталога?
Какие файлы считаются «скрытыми» в ОС GNU/Linux? Где такие файлы обычно находятся? Какое назначение у данных файлов?
Какие команды можно использовать для изменения текущего рабочего каталога?
Как следует работать с файлами, содержащими пробелы в своих названиях?
Умейте формировать относительные и абсолютные пути к файлам и каталогам файловой системы GNU/Linux.
Умейте изменять текущий рабочий каталог с использованием любых путей.
Тема «Получение информации о командах из стандартных руководств»
#
Каким образом интерпретатор Bash обрабатывает команды, переданные пользователем?
Какие типы команд может обрабатывать интерпретатор Bash? Как можно определить тип команды? В чём их принципиальное отличие друг от друга?
Как можно прочитать документацию для встроенных команд интерпретатора?
Объясните типичные схемы кодирования различных вариантов вызова команды, принятой в стандартной документации. Приведите примеры.
Каким образом можно прочитать документацию, встроенную в приложение?
Для чего используется приложение man? Какова связь между приложениями man и приложением-пейджером less?
Какие существуют разделы man-руководств? Как открыть руководство из целевого раздела?
Как можно выполнять поиск информации по доступным локально man-руководствам?
Какие возможности предоставляют псевдонимы Bash? Как их использовать?
Умейте получать текст документации на все типы команд.
Умейте получать знания из текстов документации на разные типы команд.
Тема «Использование текстовых редакторов Vim и GNU Emacs»
#
Какое применение существует у текстовых редакторов в командном интерфейсе?
Какие существуют текстовые редакторы?
Опишите ключевые отличия между текстовыми редакторами emacs, nano и vim.
Умейте использовать один из текстовых редакторов emacs, nano или vim в рамках консольного интерфейса.
Опишите предназначение механизма shebang в GNU/Linux.
Как запускать скрипты с явным и неявным указанием интерпретатора? В каких случаях следует применять каждый из способов?
Какое основное назначение у написания скриптов на языке Bash?
Какие есть альтернативы к написанию скриптов кроме Bash? В каких случаях следует использовать альтернативные языки программирования?
Опишите процесс обработки строк в Bash. Опишите расширения путей и порядок их применения при обработке строк в Bash.
Опишите синтаксис определения переменных, присваивания им значений и получение значений переменных.
Опишите синтаксис условного оператора, циклических операторов Bash. Укажите ключевые особенности проверки на правдивость и ложность в рамках данных операторов.
Опишите синтаксис для доступа к аргументам скриптов и функций на языке Bash?
Каким образом можно проверить качество скриптов на языке Bash?
Умение оформлять скрипты на языке Bash для решения произвольных задач.
Что такое процесс? Чем отличается процесс от приложения?
Откуда процессы берутся в операционной системе?
Какими правами обладают запущенные процессы? Откуда берутся права у новых процессов?
Может ли процесс изменить (расширить или уменьшить) список доступных прав?
В каких состояниях может находиться процесс? Для каких целей используются разные состояния процессов? Как процесс переходит между этими состояниями?
Какими ресурсами может обладать процесс?
Каким образом происходит выделение ресурсов процессам: кто инициирует, кто координирует?
Что такое сигнал? Кто может формировать сигналы процессам? Какие задачи решают с помощью сигналов процессам?
Опишите назначение приложений и типичные сценарии использования ps, top, kill, killall.
Какие возможности у Bash для работы с фоновыми процессами?
Опишите назначение команд bg, fg, jobs.
Умение просматривать список текущих процессов с помощью моментального просмотра ps и в интерактивной форме top.
Умение посылать сигналы процессам по их названию, уникальному номеру и т.д.
Умение приостанавливать работу процессов с помощью командного интерпретатора Bash. Умение восстанавливать работу процесса в фоновом и в основном процессах.
Тема «Управление пакетами с помощью инструментов dpkg и apt»
#
Опишите типичные схемы доставки приложений в операционных системах семейства Windows, Android, iOS, macOS.
Какое назначение у подсистемы пакетного менеджера в рамках ОС GNU/Linux?
Какие пакетные менеджеры существуют? Что между ними общее? Какие отличия?
Какое назначение несут репозитории? Кто может предоставлять репозиторий?
Из каких частей состоит пакет? Что такое зависимости пакета, для чего они применяются?
Укажите на способы поиска пакетов в пакетном менеджере APT и дистрибутиве Debian GNU/Linux.
Каким образом можно установить пакет?
Каким образом происходит настройка пакетного менеджера APT?
Какие разделы репозиториев есть в Debian GNU/Linux?
Умение использовать пакетный менеджер apt для установки пакетов из репозитория.
Умение использовать систему пакетов dpkg для установки и поиска пакетов, для поиска соответствия между файлами и пакетами.
Тема «Установка приложений из исходных кодов для языков C++ и Python»
#
Как выглядит процесс компиляции приложений, написанных на языке C++?
Какой инструментарий можно использовать для компиляции приложений на языке C++ в GNU/Linux?
Как называются пакеты Debian GNU/Linux с инструментами разработки приложений на языке C++?
Как происходит компиляция и установка приложений, использующих инструментарий Autotools и Cmake?
Какие требования предъявляются к компиляции и к работе приложения на языке Python?
В каких каталогах располагаются пакеты Python-приложений?
Какие средства управления версиями Python-приложений и наборами Python-пакетов вы знаете?
Как происходит установка приложений с помощью pip и setuptools?
Умение выполнения компиляции и установки приложений на языке C++ с использованием инструментария setuptools.
Умение выполнения установки приложений и зависимостей с использованием Python-пакетов из pip-репозитория.
Тема «Система инициализации и управления службами systemd»
#
Опишите процесс загрузки ОС GNU/Linux.
Какие существуют системы инициализации? Назовите их преимущества и недостатки.
Какие типичные стадии инициализации присутствуют в systemd?
Какие команды systemcl используются для настройки стадий инициализации ОС? Как можно перейти между данными стадиями?
Каким образом происходит настройка служб в systemd?
Какие типы конфигурационных файлов есть в systemd?
Как происходит настройка выполнения задач по расписанию?
Как просматривать и управлять состоянием служб systemd?
Умение просматривать текущее состояние системы инициализации systemd.
Умение просматривать текущее состояние служб и таймеров системы systemd.
Умение добавлять новые службы и таймеры в систему systemd.
Опишите назначение веб-серверов, их типичные схемы применения.
Опишите структуру каталогов конфигурации веб-сервера nginx. Как происходит подключение и отключение опциональных частей конфигурации?
Как выглядит типичный сценарий по добавлению поддержки нового виртуального сервера в рамках nginx?
Как описывать раздачу статических файлов с файловой системы?
Как описывать обратное проксирование запросов к веб-приложениям?
Как организовать одновременную раздачу данных и с файловой системы и веб-приложением?
Уметь устанавливать веб-сервер nginx из репозитория.
Уметь подключать и отключать описания виртуальных серверов nginx.
Уметь формировать описания виртуальных серверов nginx с возможностью настройки: обслуживаемого доменного имени, способа предоставления данных (с файловой системы, проскирование).
Каким образом происходит настройка сервера OpenVPN? Какие ключевые параметры есть? Как настраивать список пользователей для сервера?
Каким образом происходит настройка клиента OpenVPN?
Уметь устанавливать клиентские и серверные компоненты сервера OpenVPN.
Уметь настраивать серверную часть для обеспечения подключения ряда клиентских приложений.
Уметь настраивать клиенсткое приложение для подключения к серверной части. Умение автоматизировать подключение с помощью менеджера сетевых подключений NetworkManager.
Синхронизация данных между компьютерами с помощью Syncthing
#
Опишите назначение технологии синхронизации данных syncthing.
Как происходит настройка приложения syncthing на компьютере? Как происходит связывание нескольких компьютеров друг с другом?
Как происходит разрешение конфликтных ситуаций?
Можно ли использовать данную систему как средство резервного копирования?
Уметь устанавливать приложение Syncthing на компьютер, формировать systemd-службу для его автоматического запуска.
Уметь настраивать связь между рядом несколькими копиями Syncthing по ряду каталогов.
Уметь решать конфликты синхронизации между разными системами.