• подключение и настройка аппаратных устройств;
• установка и обновление программного обеспечения;
• запуск и настройка общесистемных сервисов (конфигурирование системы);
• управление пользователями;
• управление процессами;
• распределение ресурсов;
• обеспечение безопасности.
Вопросы подключения и настройки аппаратных средств, а также процедуры установки и обновления программного обеспечения мы рассмотрим в двух последующих главах. Остальные задачи системного администрирования будут кратко рассмотрены в настоящем разделе. Начнем с рассмотрения того, как происходит процесс загрузки ОС. Дело в том, что этот этап во многом определяет режим последующей работы системы и ее конфигурацию. Если вы умеете влиять на процесс загрузки, значит, вы уже сможете добиться желаемой конфигурации системы после загрузки.
Но для понимания процедуры начальной загрузки необходимо иметь самое общее представление о том, что такое процесс в системе, поскольку это понятие будет постоянно использоваться в дальнейшем.
В самом первом приближении можно считать, что процесс – это загруженная в оперативную память программа. Но это не совсем точно, правильнее было бы сказать, что ‘процесс выполняет программу’. Дело в том, что в Linux вначале запускается процесс, который загружает в оперативную память программу из указанного ему файла и начинает ее выполнять. Это означает, что каждый процесс должен быть запущен (как говорят – ‘порожден’) каким-то другим процессом. То есть для каждого процесса однозначно определен его ‘родитель’ (или ‘предок’), для которого данный процесс является ‘дочерним’ (или ‘потомком’). Если вы хотите увидеть ‘дерево’ запущенных в вашей системе процессов, выполните команду pstree. Вывод этой команды позволяет увидеть, что ‘отцом’ всех процессов в системе (или ‘корнем дерева процессов’) является процесс init, который первым запускается после загрузки ядра.
Каждый процесс в системе имеет уникальный идентификатор – PID, назначаемый процессу при запуске. Процесс с идентификатором 1 выполняет программу init. Именно по этим идентификаторам система различает процессы. Каждый запущенный процесс в любой момент времени находится в одном из следующих состояний: активен (R), приостановлен (T) или ‘спит’ (S). Текущее состояние процесса называют статусом процесса.
Кроме идентификатора и статуса для каждого процесса в специальных структурах ядра сохраняются следующие данные (приводимый ниже перечень является далеко не полным):
• полная командная строка запуска выполняемой процессом задачи;
• информация об отведенном процессу адресном пространстве;
• ссылка на текущий рабочий каталог и корневой каталог процесса (последний служит для ограничения доступа процесса к файловой структуре);
• таблица открытых процессом файлов;
• так называемое окружение процесса, т. е. перечень заданных для данного процесса переменных с их текущими значениями;
• атрибуты, определяющие права и привилегии процесса, таблица обработчиков сигналов;
• указание на родительский процесс;
• пользовательская маска (umask) или маска доступа – указание на то, какие права надо удалить при создании нового файла или каталога из стандартного набора прав, присваиваемых файлу (каталогу).