Практика. Использование службы SystemD
Документация
- ArchWiki systemd на русском
 - systemd Часть 1: Понимание systemd, типы юнитов и целевые юниты
 - systemd Часть 2: Управление юнитами, зависимостями и целями
 - Systemctl-управление службами в Linux
 
Просмотр состояния о системе
- Используйте команды 
list-unitsиstatusдля отображения списка модулей (unit).- Для решения каких задач предназначены данные команды?
 - Можно ли использовать обе команды для достижения одинаковых целей? Какую информацию можно получить с помощью одной из команд, которую нельзя получить с помощью другой?
 
 - Найдите все цели (тип модулей target), которые есть у systemd.
    
- Используя команду 
list-dependenciesотобразите модули, которые зависят от данных целейЙ multi-user.targetnetwork.targetbasic.targetrunlevel1.target
 - Используя команду 
 
Взаимодействие со службой nginx
- Установите пакет 
nginx. - После установки служба 
nginxдолжна автоматически запуститься. После этого можно подключиться к данному веб-серверу.- Если у вас сетевой интерфейс настроен в режиме моста, тогда в адресной строке браузера надо указать http://ip-адрес-виртуальной-машины:80
 - Если у вас сетевой интерфейс работает в режиме NAT, тогда в правилах проброса надо добавить правило для проброса порта 22080 на порт виртуальной машины 80. После этого служба будет доступна по адресу http://localhost:22080
 
 - Остановите службу nginx. Удостоверьтесь, что браузер не может к ней подключиться.
 - Запустите службу nginx. Удостоверьтесь, что браузер может подключиться к веб-серверу.
 - Перезапустите виртуальную машину. Удостоверьтесь, что служба запущена с помощью команды 
systemctl status. - Отключите автоматический запуск службы 
nginxпосле запуска. Перезапустите виртуальную машину. Удостоверьтесь, что служба не запущена. - Запустите вручную службу 
nginx. 
Создание собственной службы
- Установите интерпретатор языка 
python3. - 
    
Скопируйте следующий код в файл
long-living-app.py:#!/usr/bin/env python3 import time def main(): log = open('/var/run/long-living-app-log', mode='a') while True: log.write("I am alive!\n") log.flush() time.sleep(5) if __name__ == "__main__": main() - Создайте файл конфигурации для службы systemd. Назовите файл 
my-first-daemon.service.- В качестве шаблона используйте пример из man-страницы для systemd.service. Смотрите раздел examples.
 - В качестве строки для запуска используйте 
/usr/bin/python3 ПУТЬ-К-long-living-app.py. 
 - Разместите конфигурационный файл в каталоге для системных служб 
/etc/systemd/system. - Дайте команду на перечитывание конфигурации служб, 
daemon-reload. - Посмотрите на статус службы 
my-first-daemon.service. - Запустите данную службу. Убедитесь, что она работает.
    
- Получите статус работы у systemd.
 - Проверьте, что в файл 
/var/run/long-living-app-logкаждые 5 секунд записывается новая строкаI am alive!. 
 - Перезапустите систему и убедитесь, что служба не работает.
 - Настройте службу так, чтобы она запускалась при входе в систему. Перезапустите систему и убедитесь, что служба начала свою работу.
 - Остановите службу и отключите её автоматический запуск.ж
 
Создание задачи, выполняемой по расписанию
- 
    
Скопируйте следующий код в файл
one-shot-service.bash#!/bin/bash echo "I was run on $(date +%f-%R:%S)" >> /var/run/timer-service.log - Создайте файл конфигурации службы systemd. Назовите файл 
my-one-short-task.service.- В качестве примера используйте oneshot-service.
 - В качестве пути для запуска укажите путь к службе.
 - Удалите секцию Install.
 
 - Установите конфигурацию службы и убедитесь, что можете её запустить с помощью systemd.
 - Добавьте файл конфигурации для расписания запуска службы. Назовите файл 
my-one-short-task.timer.- В качестве основы для файла используйте пример из Wiki ArchLinux
 - В качестве времени для старта используйте 60 секунд после старта системы.
 - В качестве повторной активации используйте 60 секунд после запуска службы.
 
 - Разместите таймер в конфигурационном каталоге systemd рядом с конфигурацией службы.
 - Перезагрузите конфигурацию systemd.
 - Проверьте состояние таймера - он должен быть деактивирован.
 - Установите таймер и перезагрузите систему.
 - Удостоверьтесь, что через минуту после запуска системы таймер сработал. Проверить можно в журнале работы таймера, службы, или по содержимому файла 
/var/run/timer-service.log. - Удостоверьтесь, что ещё через минуту после запуска системы таймер сработал.
 - Отключите автоматический запуск таймера при входе в систему. Перезагрузите систему и убедитесь, что таймер и служба неактивны.