Ответ
Да, работал. Использовал systemd для развертывания и управления демонами (сервисами), написанными на C++, в production-среде.
Типичная задача — создание сервиса для сетевого демона. Я создаю unit-файл, например, /etc/systemd/system/my-cpp-daemon.service:
[Unit]
Description=High-performance TCP Daemon (C++)
After=network.target
Requires=network.target
[Service]
Type=simple
# Запуск от имени непривилегированного пользователя
User=appuser
Group=appuser
# Путь к скомпилированному бинарнику
ExecStart=/usr/local/bin/my_cpp_daemon --config /etc/myapp/config.yaml
# Автоматический рестарт при падении
Restart=on-failure
RestartSec=5
# Лимиты для предотвращения утечек ресурсов
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
Основные команды для управления:
# Загрузить конфигурацию после изменения файла
sudo systemctl daemon-reload
# Запустить сервис
sudo systemctl start my-cpp-daemon
# Включить автозапуск при загрузке системы
sudo systemctl enable my-cpp-daemon
# Проверить статус и последние логи
sudo systemctl status my-cpp-daemon
# Просмотреть подробные логи (очень полезно для отладки C++ демона)
sudo journalctl -u my-cpp-daemon -f
Также использовал systemd-таймеры как более надежную альтернативу cron для периодического запуска C++ утилит для обработки данных.