Настройка служб и таймеров systemd

Настройка служб и таймеров systemd #

Документация #

Просмотр состояния о системе #

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

  • Используйте команды list-units и status для отображения списка модулей (unit).
    • Для решения каких задач предназначены данные команды?
    • Можно ли использовать обе команды для достижения одинаковых целей? Какую информацию можно получить с помощью одной из команд, которую нельзя получить с помощью другой?
  • Найдите все цели (тип модулей target), которые есть у systemd.
    • Используя команду list-dependencies отобразите модули, которые зависят от данных целей:
    • multi-user.target
    • network.target
    • basic.target
    • runlevel1.target

Взаимодействие со службой httpd #

  1. Установите пакет apache2. Данный пакет является поставкой второй версией веб-сервера HTTPD от проекта Apache.
  2. После установки служба httpd2 автоматически не запускается. В других дистрибутивах служба может автоматически запуститься.
  3. Запустите службу httpd2. После этого можно подключиться к данному веб-серверу.
    • Если у вас сетевой интерфейс настроен в режиме моста, тогда в адресной строке браузера надо указать http://ip-адрес-виртуальной-машины
    • Если у вас сетевой интерфейс работает в режиме NAT, тогда в правилах проброса надо добавить правило для проброса порта 2080 на порт виртуальной машины 80. После этого служба будет доступна по адресу http://localhost:2080
  4. Перезапустите виртуальную машину. Удостоверьтесь, что служба остановлена с помощью команды systemctl status.
  5. Добавьте автоматический запуск службы httpd2 после перезапуска сервера.
    1. Перезапустите виртуальную машину.
    2. Удостоверьтесь, что служба запущена после перезапуска.

Создание собственной службы #

  1. Установите интерпретатор языка python3.
  2. Скопируйте следующий код в файл 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()
    
  3. Создайте файл конфигурации для службы systemd. Назовите файл my-first-daemon.service.
    • В качестве шаблона используйте пример из man-страницы для systemd.service. Смотрите раздел examples.
    • В качестве строки для запуска используйте /usr/bin/python3 ПУТЬ-К-long-living-app.py.
  4. Разместите конфигурационный файл в каталоге для системных служб /etc/systemd/system.
  5. Дайте команду на перечитывание конфигурации служб, daemon-reload.
  6. Посмотрите на статус службы my-first-daemon.service.
  7. Запустите данную службу. Убедитесь, что она работает.
    • Получите статус работы у systemd.
    • Проверьте, что в файл /var/run/long-living-app-log каждые 5 секунд записывается новая строка I am alive!.
  8. Перезапустите систему и убедитесь, что служба не работает.
  9. Настройте службу так, чтобы она запускалась при входе в систему. Перезапустите систему и убедитесь, что служба начала свою работу.
  10. Остановите службу и отключите её автоматический запуск.ж

Создание задачи, выполняемой по расписанию #

  1. Скопируйте следующий код в файл one-shot-service.bash
    #!/bin/bash
    
    echo "I was run on $(date +%f-%R:%S)" >> /var/run/timer-service.log
    
  2. Создайте файл конфигурации службы systemd. Назовите файл my-one-short-task.service.
    • В качестве примера используйте oneshot-service.
    • В качестве пути для запуска укажите путь к службе.
    • Удалите секцию Install.
  3. Установите конфигурацию службы и убедитесь, что можете её запустить с помощью systemd.
  4. Добавьте файл конфигурации для расписания запуска службы. Назовите файл my-one-short-task.timer.
    • В качестве основы для файла используйте пример из Wiki ArchLinux
    • В качестве времени для старта используйте 60 секунд после старта системы.
    • В качестве повторной активации используйте 60 секунд после запуска службы.
  5. Разместите таймер в конфигурационном каталоге systemd рядом с конфигурацией службы.
  6. Перезагрузите конфигурацию systemd.
  7. Проверьте состояние таймера - он должен быть деактивирован.
  8. Установите таймер и перезагрузите систему.
  9. Удостоверьтесь, что через минуту после запуска системы таймер сработал. Проверить можно в журнале работы таймера, службы, или по содержимому файла /var/run/timer-service.log.
  10. Удостоверьтесь, что ещё через минуту после запуска системы таймер сработал.
  11. Отключите автоматический запуск таймера при входе в систему. Перезагрузите систему и убедитесь, что таймер и служба неактивны.

© A. M. Васильев, 2022, CC BY-SA 4.0, andrey@crafted.su