Управление сервисами и Systemd
- Частное управление сервисами
- Простое конфигурирование приложений
- «Сервисы по управлению сервисами»
Systemd- Главный разработчик — Леннарт Пёттеринг
- Инициализирующий комплекс программ Linux
- Управление всеми сервисами системы
- Как и всё хорошее — не без странностей (
)
- Структура:
systemctl— управление сервисами- Команды ручного управления сервисами (
start / restart / stop / status) - Команды автоматического подключения сервисов (
enable/disable) - Команда описания и редактирования сервисов (
edit)
- Команды ручного управления сервисами (
Связь с интерпретатором
- Полноценный сервис:
- Сам создаёт сокет подключения
- Сам его обрабатывает
- Сам обрабатывает ввод-вывод
- Сам завершается
- Сокет-активация (
daemon):- Обслуживание сокета на плечах
Systemd - Сервис работает с просто с потоками ввода-вывода
- Вообще говоря, любыми, ему без разницы
- Обслуживание сокета на плечах
—реализация:
Systemdсоздаёт и управляет сокетом, но не наполняет его- Всё, кроме создания, уходит в сервис
- Ограничение прав доступа
Запуск сетевого сервиса

Работаем с ВМ для лабораторных работ по сетевым технологиям
- Так просто проще настраивать всё
- С точностью до правильных интерфейсов можно повторить с любым образом
- Есть удобные способы управления и взаимодействия с ВМ
- Shell-сценарии (Linux only)
- Python-пакет PySnap (Кроссплатформенный!)
[user@localhost: ~] $ cd /tmp
[user@localhost: /tmp] $ python3 -m venv venv
[user@localhost: /tmp] $ source venv/bin/activate
[user@localhost: /tmp (venv)] $ pip install ~/Downloads/pysnap-0.1.1-py3-none-any.whl
Processing /home/papillon_rouge/Downloads/pysnap-0.1.1-py3-none-any.whl
<…>
Successfully installed prompt_toolkit-3.0.52 pysnap-0.1.1 pyte-0.8.2 wcwidth-0.6.0
[user@localhost: /tmp (venv)] $
[user@localhost: /tmp (venv)] $ pysnap import /path/to/your/image.ova BaseName
[user@localhost: /tmp (venv)] $ pysnap protosettings BaseName
[user@localhost: /tmp (venv)] $ pysnap clone Basename PC1 intnet
[user@localhost: /tmp (venv)] $ pysnap clone BaseName PC2 intnet
[user@localhost: /tmp (venv)] $ pysnap connect PC1
[user@localhost: /tmp (venv)] $ pysnap connect PC2
$ ss -ltp
$ socat TCP-LISTEN:1234 EXEC:/usr/bin/cal &
$ netcat localhost 1234
* Параметры socat:
- reuseaddr
- fork
Запуск полноценных сервисов с помощью Systemd
cal.service
[Unit]
Description=Calendar
[Service]
ExecStart=/usr/bin/socat TCP-LISTEN:1234,reuseaddr,fork EXEC:/usr/bin/cal
Запуск демонов с помощью Systemd
hexdump.socket
[Unit]
Description=Hex Dump Socket
[Socket]
ListenStream=1234
Accept=yes
hexdump@.service
[Unit]
Description=Hex Dump
[Service]
ExecStart=/usr/bin/hexdump -C
StandardInput=socket
$ systemctl | grep hexdump
Перманентная настройка сети с помощью systemd-networkd
$ networkctl
/etc/systemd/network/10-eth0.network
[Match]
Name=eth0
[Network]
Address=10.0.2.15/24
Gateway=10.0.2.2
/etc/systemd/network/50-internal.network
[Match]
Name=eth1
[Network]
Address=10.0.10.2/24
[Route]
Gateway=0.0.0.0
Destination=10.0.10.1
Важный
-момент: в случае ошибок при настройке нигде кроме journalctl это отмечено не будет. При этом все корректные части настройки сработают.