Как я уже говорил в предыдущих статьях, systemd управляется командой systemctl. Давайте рассмотрим, что можно сделать и о чем можно узнать с помощью данной команды.
Служба systemd состоит из модульных файлов, в которых описано как нужно себя вести. Существует несколько типов таких файлов (см. Systemd.Модули и модульные файлы ) В данной статье остановимся на service и чуть-чуть на остальных.
Синтаксис у этой команды следующий:
$systemctl опции команда служба служба ...
Список большинства используемых команд, опций и кое-чего еще можно посмотреть здесь тыц.
Вызов systemctl без каких-либо аргументов, по умолчанию, равносильна вызову $systemct list-units, которая показывает все загруженные и активные службы, сокеты, цели, смонтированные диски и устройства. Давайте рассмотрим, что же она показывает на следующем примере:
В первом столбце перечислены, загруженные юниты, которые известны 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 очень сложная и многофункциональная, описать ее в одной статье не получится. Тут потребуется скорее всего целая книга. Но в целом этого Вам хватит, чтобы настройка служб не вызвала больших проблем. Если у Вам есть что добавить, ниже можно оставить комментарий, будет интересно узнать.