Systemd как средство диагностики неисправностей в Linux.

Distributed compilations of software based on the Linux kernel that do not by default include systemd.

Причины для проверки диска

Основная причина проверки это как правило медленная работа системы или зависание при определенных действиях. Вывести диск из строя могут разные факторы. Вот некоторые из них:

  • Время жизни диска не вечна;
  • Некорректные выключения системы при пропадании питания;
  • Физические удары;
  • Запуск холодного диска зимой.

Самое лучшее это периодически проверять диск просто так. На ранней стадии обнаружения гораздо больше шансов сохранить важные данные.

Храните важные данные в двух совершенно разных физически местах. Только такой подход гарантирует вам полную сохранность данных.

Структура юнита systemd

Давайте рассмотрим файл юнита Nginx, и из чего он состоит. На первый взгляд, эта информация может показаться запутанной, но она вполне логична и обязательна для понимания.

[email protected]:~ systemctl cat

[Unit] — Обычно здесь описаны метаданные службы и её взаимодействие с другими службами.

Description — краткое описание демона

Documentation — страница man, где описана работа со службой, в данном случае Nginx

Структура юнита systemd

After — Дословно означает «После». Поле указывает, после каких демонов или событий данный юнит будет запущен. На нашем примере, юнит Nginx будет запущен после того, как поднимутся сетевые интерфейсы.

[Service] — Описывает конфигурацию. Применяется только для юнитов служб.

Type — Важный параметр. Описывает, каким образом демон будет запущен. В нашем варианте это forking, но вы можете столкнуться и с другими:

forking — после запуска демон ответвляется (fork), завершая родительский процесс;

simple — при запуске, демон переходит в режим ожидания, в своем первоначальном виде;

Читайте также:  Как записать GIF с экрана в Linux Mint

one-shot — одноразовое выполнение. Данный тип используется для скриптов, которые должны запуститься, и завершиться после выполнения.

PIDFile — указывает на основной процесс, который отслеживает systemd

ExecStartPre — основной путь и аргументы, с которыми будет запущена команда ДО запуска основного процесса

ExecStart — основной путь и аргументы, с которым будет запущен Nginx

ExecReload — указывает команду для перезапуска службы

ExecStop — команда для остановки службы

TimeoutStopSec — Указывает, что система будет ждать 5 секунд остановки службы, прежде чем остановить её принудительно

Структура юнита systemd

[Install] — описывает поведение юнита.

WantedBy — описывает как именно устройство будет включено. означает, что при запуске, в каталоге /etc/systemd/system будет создан каталог , в котором будет создана символическая ссылка на службу. Это параметр зависимости с текущим блоком, когда вы остановите службу, эта ссылка будет удалена.

С доступным перечнем параметров вы можете ознакомится обратившись к руководству:

[email protected]:~ man

А теперь в двух словах, чем нам может быть полезна эта информация. В зависимости от задач, мы эти юниты можем создавать, редактировать и настраивать их поведение. Мы можем указать порядок загрузки той или иной службы, настраивать зависимости между службами. Например, у нас имеется сервер с критической службой, которая всегда должна быть активна. Мы можем выставить параметр принудительно перезагрузки, если по каким-то причинам она не отвечает. Так же укажем информирование по e-mail об инциденте. В случае если «упал» Apache, он будет автоматически перезагружен без участия администратора. Администратор получит уведомление на e-mail и оказавшись у терминала, приступит к анализу, почему это произошло.

Юниты

В отличие от SysV init и upstart, в которых запуск, остановка и рестарт процессов производилась с помощью скриптов на языке bash, в systemd используется такое понятие как юнит. Юнит это аналог такого init-скрипта, только имеющий более простой и читаемый синтаксис. Юнит — это самая базовая сущность, с которой работает systemd. Юниты определяются в виде обычных текстовых файлов и загружаются демоном в оперативную память на этапе старта системы. Список юнитов, запущенных на вашей машине можно посмотреть, выполнив systemctl list-units.

Читайте также:  Операции с файлами и каталогами linux: как выполнять правильно

Так как типы юнитов и работу с ними я планировал вынести в отдельные статьи, здесь я опишу их только вкратце для понимания самого содержания материала.

Юниты бывают следующих типов:

  • service — самый используемый вид юнитов, описывает службы, или приложения, работающие в фоновом режиме (демоны).
  • socket — юниты для описания IPC, сетевых сокетов и FIFO буферов.
  • device — автоматически создаваемые юниты, описывающие файлов устройств, которые необходимы для systemd.
  • mount — юниты для описания точек монтирования.
  • automount — .юниты для автоматического монтирования файловых систем. Зависят от mount юнитов и выполняются после них.
  • swap — описывает файл подкачки.
  • target — то, что раньше имело название runlevel, юниты, описывающие базовое состояние системы.
  • path — юниты, для отслеживания изменения путей в файловой системе.
  • timer — юниты для описания задач по расписанию, аналог cron
  • slice — юниты для управления группой процессов с помощью Linux CGroups (man ).
  • scope — не конфигурируются с помощью файлов, генерируются автоматически на основе данных из системной шины. Используются для управления группами процессов, созданных извне.

Получение справки:

# Информация про сами юниты и справка по параметрам, # использующимся в секции [Unit] man # Справка по каждому типу юнитов # man ststemd.<unit-type> man man # и так далееДисклеймер

Для наглядности примеров был выбран юнит демона avahi. Если вы не знаете или не уверены в назначении того или иного юнита, рекомендуется установить какой-нибудь сторонний сервис, который не имеет отношения к операционной системе и производить деструктивные операции типа stop, disable, mask уже над ним (например можно установитьnginx).

GDM (Gnome Display Manager)

GDM для GNOME – то же самое, что KDM для KDE – это стандартный дисплей-менеджер для большого и популярного окружения рабочего стола для Linux. Как и KDM, он поддерживает X и Wayland, автоматический вход в систему, скрытие списка пользователей, вход без пароля, кастомные сессии и темы. Также возможна ситуация, когда несколько пользователей вошли в систему – тогда вы сможете быстро переключаться между их GDM можно либо с помощью соответствующего диалога в системных настройках или через редактирование конфигурационных файлов (это зависит от используемого вами дистрибутива, это может быть файл по адресу /etc/X11/gdm/ или /etc/gdm/). GDM также хранит некоторые ключи настроек в базе данных dconf, поэтому, если вам нравится расширенная настройка системы, или вам необходимые дополнительные опции вроде сканирования отпечатков пальцев или аутентификации с помощью смарт-карт, вы можете изучить файлы в /etc/dconf/db/gdm.d.

GDM (Gnome Display Manager)

Важно заметить, что внешний вид GDM потерпел серьезные изменения в Gnome 3/Gnome Shell, поэтому новая версия GDM (обычно называемая как GDM3) достаточно сильно отличается от старого – «legacy» GDM-версии, хотя изменения могут не лежать на поверхности. В новой версии отсутствует обратная совместимость со старыми темами GDM и у нее меньше возможностей. Большинство опций скрыты из конфигурационных файлов и недоступны через диалог списком пользователей также менее удобно, потому что вы не можете просто отредактировать соответствующий файл – GDM3 полагается на AccountsServiсe, когда дело касается информации о пользователях. Вы все еще можете настраивать его внешний вид с помощью редактирования файла /etc/gdm3/ или попробовав настроить его с помощью сторонних утилит вроде GDM3setup.

Читайте также:  10 способов форматирования MicroSD: Защита от записи и как ее снять