Найти тему

Systemd. Systemctl.

Как я уже говорил в предыдущих статьях, systemd управляется командой systemctl. Давайте рассмотрим, что можно сделать и о чем можно узнать с помощью данной команды.

Служба systemd состоит из модульных файлов, в которых описано как нужно себя вести. Существует несколько типов таких файлов (см. Systemd.Модули и модульные файлы ) В данной статье остановимся на service и чуть-чуть на остальных.

Синтаксис у этой команды следующий:

$systemctl опции команда служба служба ...

Список большинства используемых команд, опций и кое-чего еще можно посмотреть здесь тыц.

Вызов systemctl без каких-либо аргументов, по умолчанию, равносильна вызову $systemct list-units, которая показывает все загруженные и активные службы, сокеты, цели, смонтированные диски и устройства. Давайте рассмотрим, что же она показывает на следующем примере:

-2

В первом столбце перечислены, загруженные юниты, которые известны systemd. В данный момент они либо запущены, либо были запущены ранее. Команда не пересматривает все существующие файлы, а отображает только те, к которым уже были обращения. Ну и по названию юнита можно определить тип, он указан после ".". Во втором столбце отображается информация о том, что конфигурационный файл был успешно загружен (loaded). Следующая колонка сообщает, что служба была удачно запущена - active, либо бывает вариант failed, означающий что не все так хорошо. В четвертой колонке указан статус службы, runing - значит выполняется, exited - значит выполнилась и завершила работу. И в самом последнем столбце указано краткое описание модуля.

Вывод также можно отфильтровать, например следующая команда

$systemctl --type service

Выведет на экран только службы, то есть юниты с суффиксом .service. Если мы хотим получить полный список юнитов, которые еще не запускались, но systemd их знает, то можно добавить опцию --all

$systemctl --all (выведет полный список всех юнитов)
$systemctl --type service --all (выведет полный список юнитов .service)

Так же модно отфильтровать вывод по состоянию:

$systemctl --type service --state running (выведет список запущенных служб)

Для фильтрации можно брать любой параметр состояния из любой колонки. Следующей командой можем посмотреть все файлы конфигурации служб на диске:

$systemctl list-unit-files

Чтобы запустить службу используется start, например следующая команда

$systemctl start app

Запустит службу app.service. При этом в вызове .service можно опустить. Чтобы остановить службу, используется подкоманда stop.

$systemctl stop app

Остановит службу app.service. Посмотреть состояние службы можно командой status.

$systemctl status app

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

Systemd может запускать службы при запуске системы. Для этого она должна находится в состоянии enabled. Какие службы добавлены в автозагрузку можно посмотреть следующей командой:

$systemctl list-unit-files --state enabled

Добавить службу в автозагрузку можно командой

$systemctl enable app

Убрать из автозагрузки

$systemctl disable app

Еще, кроме enable и disable, существуют другие типы состояний, такие как:

bad - У менеджера systemd возникла какая-то проблема; обычно связана со сбоем модульного файла

inderect - Отключен, но имеет одинаковые значение в разделах Also, которые могут быть включены

linked - Модульный файл, доступный через символическую ссылку.

masked - Статус, который означает "заблокирован администратором". systemd знает о модуле, но ему запрещено его активировать. Нежелательный статус с логической точки зрения.

static - зависит от другого устройства, не требует установки.

Резюме

В этой статье я перечислил команды, которыми я пользуюсь в процессе работы системным администратором. На самом деле утилита systemd очень сложная и многофункциональная, описать ее в одной статье не получится. Тут потребуется скорее всего целая книга. Но в целом этого Вам хватит, чтобы настройка служб не вызвала больших проблем. Если у Вам есть что добавить, ниже можно оставить комментарий, будет интересно узнать.