Введение в основные концепции Linux
Linux (произносится «ли́нукс») — Unix-подобная операционная система на основе одноименного ядра и собранных для него библиотек и системных программ, разработанных в рамках проекта GNU.
Базовые принципы
Основными чертами данной операционной системы являются:
Поддержка работы большого числа пользователей
Linux изначальна была разработана с целью одновременной работы нескольких пользователей. Поэтому она имеет мощную систему контроля доступа, позволяющую всячески ограничивать права каждого пользователя в системе и делать работу всех остальных пользователей внутри общей системы безопасной.
Делай всего одну вещь и делай ее хорошо
Важной идеей Unix-подобных систем является то, что каждая программа должна решать всего одну небольшую задачу, нежели иметь функциональность для решения абсолютно всех проблем предметной области.
Например, "почтовый сервер" на Linux-системе - это обычно именно набор небольших программ для получения сообщений, фильтрации сообщений, отправки сообщений, просмотра сообщений. В сумме, решаемая задача довольно сложная, но она разбита на некоторое количество более мелких и очень простых.
Огромная гибкость подобных систем, идущая от поддержки одновременной работы многих пользователей и модульность архитектуры - вот ключевые факторы такого успеха Unix-подобных операционных система и Linux в частности.
Пользователи и группы
Поскольку Linux является многопользовательской операционной системой, она включает в себя мощную систему ограничения прав доступа пользователей, включая доступ к файлам и каталогам. Подобная система позволяет большому числу пользователей безопасно использовать одну операционную систему, а системному администратору - задавать список программ и файлов, к которым конкретный пользователь имеет доступ.
Файлы, включая и исполняемые файлы, принадлежат конкретному пользователю и группе. Пользователи, члены группы и все остальные - каждому из них могут быть выданы разрешение на чтение файла, изменение или же выполнение (если это исполняемый файл). Изменять эти разрешения может создатель файла или администратор системы (root).
Пользователи состоят в группе по-умолчанию. Обычно название этой группы совпадает с именем пользователя. Однако пользователь также может состоять в других дополнительных группах.
Соответственно, если в какой-либо группе состоит несколько пользователей, они все имеют одинаковые права к файлам, принадлежащим этой группе.
Текстовый ввод-вывод
В связи с тем, что Unix-подобные системы организованы исходя из модульного принципа, большинство программ выводят информацию и обмениваются информацией с другими в простом текстовом виде. Обычно вывод программы, запущенной через консоль, осуществляется через "stdout" (standard output) - стандартный вывод. Главное преимущество данного подхода заключается в том, что такой вывод можно перенаправить в файл или другое приложение!
Добавив символ > и имя файла в конец команды, мы перенаправим ее вывод в указанный файл, перезаписывая его содержимое если файл уже существует.
Добавив символы >> и имя файла в конец команды, вывод программы будет дописан в конец указанного файла. И, наконец, указав символ | (pipe, англ. "канал") между двумя командами, вывод из первой будет перенаправлен во вторую.
Демоны и клиент-серверная архитектура
Клиент-серверная архитектура во многих случаях является развитием модульной идеи, которую мы увидели в предыдущем разделе. В клиент-серверных приложениях, вместо монолитных исполняемых файлов, отвечающих за сбор входных данных, их обработку и вывод на интерфейс, функциональность обычно разделена на "сервер", принимающий и обрабатывающий входные данные от "клиентов", отвечающих за взаимодействие с конечным пользователем.
Существует огромное количество примеров подобной архитектуры, с которыми мы сталкиваемся в повседневной жизни. Например, веб-браузеры (клиенты), подключающиеся к веб-серверам, которые обрабатывают и пересылают данные по HTTP, которые затем отображаются веб-браузерами на экране монитора.
Серверные процессы, которые запущены в системе в фоновом режиме, называют "демонами" и обычно их исполняемые файлы заканчиваются на букву "d" (последняя буква от "daemon"). Например, сервер SSH имеет исполняемый файл sshd, а сервер MySQL - файл mysqld.
Если вы хотите запустить программу в фоновом режиме, как демон, в командной строке добавьте символ &. Обычно это полезно в ситуациях, когда необходимо запустить некоторую программу, но совершенно не важно какую информацию она выведет на экран. Указав между двумя командами символы &&, вторая будет запущена только если первая завершится без ошибок.
Дистрибутивы Linux
Подводя итог введению в операционную систему Linux, следует упомянуть идею дистрибутивов. Благодаря тому, что большинство программ в мире Linux открыто и не запрещено к распространению, и появились на свет дистрибутивы. И несмотря на большое количество отличий между ними (например, между RedHat и Debian), все дистрибутивы основаны на одном и том же исходном коде - общие ядра, общие утилиты и программы. Различия заключаются лишь в целях и назначении каждого конкретного дистрибутива.
Например, некоторые из них стараются быть минималистичными и максимально простыми, другие - содержат самые последние версии программного обеспечения, в то время как остальные - нацелены на стабильность и предсказуемость работы системы.
Не существует дистрибутива, решающего все задачи и отвечающего требованиям большинства пользователей. Именно поэтому, если вы еще новичок в мире Linux - мы рекомендуем попробовать несколько дистрибутивов, чтобы выбрать именно тот, который вам подходит. Несмотря на различия между ними, обычно переход на другой дистрибутив не составляет большого труда.
