Работали ли вы с systemd?

«Работали ли вы с systemd?» — вопрос из категории Linux и ОС, который задают на 25% собеседований C/C++ Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, работал. Использовал 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++ утилит для обработки данных.