
В последнее время я много читал о 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".
Надеюсь, кто-нибудь сможет мне помочь и направить в правильном направлении.
решение1
SystemD считает, что служба мертва, потому что нет PID-файла по ожидаемому пути. Этот PID-файл должен быть создан вашей службой, systemd просто проверяет, он не создает этот файл. Если вы не хотите создавать этот файл в своей службе, возможно, вы можете создать его с помощью небольшого скрипта оболочки в разделе ExecStartPost=
.