Настройка служб и таймеров systemd #
Документация #
- ArchWiki systemd на русском
- systemd Часть 1: Понимание systemd, типы юнитов и целевые юниты
- systemd Часть 2: Управление юнитами, зависимостями и целями
- Systemctl-управление службами в Linux
- systemd - AltLinux
- Создание сервиса systemd
- Таймеры systemd вместо crond
Просмотр состояния о системе #
Используйте команды приложения sysctl
, управляющего приложения systemd, для решения следующих задач.
- Используйте команды
list-units
иstatus
для отображения списка модулей (unit).- Для решения каких задач предназначены данные команды?
- Можно ли использовать обе команды для достижения одинаковых целей? Какую информацию можно получить с помощью одной из команд, которую нельзя получить с помощью другой?
- Найдите все цели (тип модулей target), которые есть у systemd.
- Используя команду
list-dependencies
отобразите модули, которые зависят от данных целей: multi-user.target
network.target
basic.target
runlevel1.target
- Используя команду
Взаимодействие со службой httpd
#
- Установите пакет
apache2
. Данный пакет является поставкой второй версией веб-сервера HTTPD от проекта Apache. - После установки служба
httpd2
автоматически не запускается. В других дистрибутивах служба может автоматически запуститься. - Запустите службу
httpd2
. После этого можно подключиться к данному веб-серверу.- Если у вас сетевой интерфейс настроен в режиме моста, тогда в адресной строке браузера надо указать http://ip-адрес-виртуальной-машины
- Если у вас сетевой интерфейс работает в режиме NAT, тогда в правилах проброса надо добавить правило для проброса порта 2080 на порт виртуальной машины 80. После этого служба будет доступна по адресу http://localhost:2080
- Перезапустите виртуальную машину. Удостоверьтесь, что служба остановлена с помощью команды
systemctl status
. - Добавьте автоматический запуск службы
httpd2
после перезапуска сервера.- Перезапустите виртуальную машину.
- Удостоверьтесь, что служба запущена после перезапуска.
Создание собственной службы #
- Установите интерпретатор языка
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
. - Удостоверьтесь, что ещё через минуту после запуска системы таймер сработал.
- Отключите автоматический запуск таймера при входе в систему. Перезагрузите систему и убедитесь, что таймер и служба неактивны.