В последнее время я много читал о systemd, но не могу понять, как запустить свой mono-service
через systemd.
Ниже представлена моя текущая конфигурация демона systemd:
root@LNXOSESTNL:/opt/omnius-statusdaemon# cat /etc/systemd/system/omnius-statusdaemon.service
[Unit]
Description="Omnius StatusDaemon"
After=network.target
[Service]
Type=simple
User=omnius-statusdaemon
Group=omnius-statusdaemon
ExecStart=/usr/bin/mono-service -d:/opt/omnius-statusdaemon /opt/omnius-statusdaemon/Dynacommerce.StatusQueueService.exe
PIDFile=/tmp/omnius-statusdaemon.pid
StandardOutput=journal+console
[Install]
WantedBy=default.target
Когда я запускаю сценарий выше exec, все работает нормально, и мой mono-service
это работает. Однако через systemd вывод будет ниже:
root@LNXOSESTNL:/opt/omnius-statusdaemon# systemctl status omnius-statusdaemon.service
● omnius-statusdaemon.service - "Omnius StatusDaemon"
Loaded: loaded (/etc/systemd/system/omnius-statusdaemon.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Sat 2018-03-17 11:26:38 CET; 2s ago
Process: 11099 ExecStart=/usr/bin/mono-service -d:/opt/omnius-statusdaemon /opt/omnius-statusdaemon/Dynacommerce.StatusQueueService.exe (code=exited, status=0/SUCCESS)
Main PID: 11099 (code=exited, status=0/SUCCESS)
Mar 17 11:26:38 LNXOSESTNL systemd[1]: Started "Omnius StatusDaemon".
Надеюсь, что кто-нибудь поможет мне направить меня в правильном направлении.
SystemD считает, что служба мертва, потому что на ожидаемом пути нет файла PID. Этот файл pid должен быть создан вашей службой, просто проверьте systemd, он не создает этот файл. Если вы не хотите создавать этот файл в своей службе, возможно, вы могли бы создать его с помощью небольшого сценария оболочки в разделе ExecStartPost=
.