Linux‐сервис без демона

wiki:/graphics/systemd-logo.png

Создание демона на Аде может оказаться не простым делом. Мы уже рассматривали, как это делается ранее. Но с приходом systemd можно избежать этих сложностей и запускать обычный процесс, как линукс сервис. Рассмотрим, как это делается на примере запуска AWS (а конкретнее Spikedog) процесса сервера ada_ru.

  • Разрешаем сервисы systemd для пользователя
loginctl enable-linger username
  • Устанавливаем правильные переменные окружения, например:
export LD_LIBRARY_PATH=/home/ada_ru/gnat/lib/gcc/x86_64-pc-linux-gnu/6.3.1/adalib:/home/ada_ru/adalib/lib
systemctl --user import-environment LD_LIBRARY_PATH
  • Создаем файл сервиса
mkdir ~/.config/systemd/user/
cat > ~/.config/systemd/user/ada_ru.service << EOF
[Unit]
Description=Ada_RU Webserver
Wants=network.target nss-lookup.target
After=network.target nss-lookup.target
[Service]
Type=simple
ExecStart=/home/ada_ru/ada_ru
Restart=always
RestartSec=5
[Install]
WantedBy=default.target
EOF
  • Включаем сервис
systemctl --user enable ada_ru.service
  • Смотрим статус сервиса
systemctl --user status ada_ru.service
  • Смотрим логи
journalctl --user --user-unit  ada_ru.service