06.0 (Конспект) SystemdServices
Сегодня продолжение разговора про загрузку операционной системы. Направление, с которого мы начнем это монтирование файловых систем. Обычно, классический способ загрузки операционной системы устроен таким образом что он рассчитан на сервер. Однако современные компьютеры устроены в общем не так (первым от этого пострадала сеть так, как сеть штука динамическая). В разделе носители мы создадим диск – на контролер добавим жесткий диск. И мы научимся этот диск подключать в файл и вмонтировать в дерево наших файловых систем. Init (отец всех процессов). Напоминаю, что мы занимаемся системным администрированием поэтому большую часть работ, приходится выполнять суперпользователю. В комьюнити alt linux не очень приветствуется использование утилиты sudo, потому что если ею злоупотреблять без особого точного знания как она устроена, то можно себе понастроить такие дыры в системе. Поэтому предложение использовать su. Напоминаю, что ключик - (минус) это еще одна особенность дистрибутивов именно сообщества alt linux которая состоит в том, что, согласно стандарту, утилита su без минуса получает право нужного пользователя, но оставляет окружение старого пользователя (домашний каталог, переменную окружения path). Мы подключили к нашей виртуальной машине еще один диск. Команда gparted имеет графический интерфейс (много всякой графики которая хороша для тех, кто понимает в чем дело, и плоха в том плане что её много для тех, кто не понимает в чем дело). Мы хотим создать на этом диске раздел типа ext4. Обратите внимание что доступ ко всей информации по определению запутывает пользователя и тот факт, что тут написано ext4 не означает что в действительности в этом разделе будет файл системы ext4. Нужно создать некий настроечный файл для систем D который называется mount unit. Есть документация, но она очень полная, то есть нет простых примеров. Вот так выглядит mount:
[Unit] Description=Additional drive [Mount] What=/dev/disk/by-uuid/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX Where=/mnt/driveone Type=ext4 Options=defaults [Install] WantedBy=multi-user.target
Мы говорим, что монтировать, куда монтировать, тип (который необязателен так как он авто определяется), дополнительные параметры монтирования и в какой момент это монтирование происходит. Обратим внимание, где лежат юниты – юниты в системе лежат в двух местах: те, которые приезжают вместе в пакетами (дефолтные), они лежат в каталоге /lib. Это не модифицируемые настройки, которые приезжают с пакетами и соответствующими службами. Если мы хотим поставить свою настройку, то надо написать в каталоге /etc/system/system. Классический вариант для современного линукса использовать UUID (уникальные индификаторы файловых систем). Чтобы не было неразберихи, если вы монтируется srv, то юнит тоже должен называться srv. Проверить статус командой systemctl status srv.mount.
simple – это просто такой процесс который запускается и весит (его легко убить и запустить заново).
Напоминаем, что большинство пользователей в вашей системе, которую вы только что установили, это не пользователи, а такие user id с правами которых можно запускать различные процессы.
journalctl – дает посмотреть системный журнал над systemd и -r обозначает посмотреть задом наперед.
Если у вас открыто TCP соединение, то оно гарантирует вам цельность и упорядоченность данных и это значит мы можем в поток данных писать с помощью write и потом читать с помощью read.
Когда мы используем template у нас создается временный новый сервис на каждый очередной запуск сервиса, и мы можем описать кое-какие различные параметры, которые в этом сервисе используются.
Помимо systemd общей системы, которая управляет поведением операционной системы на штатное состояние, внезапно, в вашей операционной системе запущен также ваш собственный systemd, который безо всякого суперпользователя, вашему обычному пользователю позволяет пользоваться всем тем же самым. systemctl --user показывает довольно много каких-то сервисов за который он отвечает; из них какая-то часть это перечисление девайсов.
Активация по таймеру состоит в том, что у вас какое-то событие(сервер) запускается раз в какое-то время.
Перед нами есть два пути развертывания системы – это писать все на shell (устроить гирлянду shell скриптов), либо прибить логику развёртывания системы (заложить его в голову какого-нибудь специальной службы которая этим занимается, например systemd) и описывать развертывание системы в темных конфигурационных файлов этого самого общего запуска. Это можно делать на уровне операционной системы, это можно делать на уровне отдельного пользователя.