Страницы

Поиск по вопросам

среда, 22 января 2020 г.

Daemon на MonoDevelop (C#)

#c_sharp #linux #monodevelop


Мне нужно написать аналог Windows Service под Linux на MonoDevelop, который будет
запускаться/завершаться из-под другой программы (как дочерний процесс). Реально ли
это сделать на C#?
    


Ответы

Ответ 1



В документации .net core есть пример. Официально, пример для Ubuntu 16.04, я использовал на Centos 7. Вероятно, будет работать на большинстве популярных дистрибутивов linux, но это я не проверял, стараюсь избегать зоопарка. В целом, такой подход позволяет "демонизировать" любое консольное приложение, главное чтобы оно работало с стандартным потоком вывода. Тут приведу только необходимый минимум, подробности в документации по ссылке и документации вашего конкретного дистрибутива линукс (могут быть отличия, иногда существенные, ибо зоопарк) Создайте файл определения службы. sudo nano /etc/systemd/system/kestrel-helloapp.service Пример файла службы для нашего приложения. [Unit] Description=Example .NET Web API App running on Ubuntu [Service] WorkingDirectory=/var/www/helloapp #команда для запуска вашего приложения такая же, как при обычном запуске в консоли ExecStart=/usr/bin/dotnet /var/www/helloapp/helloapp.dll Restart=always # Restart service after 10 seconds if the dotnet service crashes: RestartSec=10 KillSignal=SIGINT SyslogIdentifier=dotnet-example #не забываем предварительно создать пользователя и выдать ему необходимые права User=www-data Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install] WantedBy=multi-user.target Сохраните файл и включите службу. sudo systemctl enable kestrel-helloapp.service Запустите службу и убедитесь, что она работает. sudo systemctl start kestrel-helloapp.service sudo systemctl status kestrel-helloapp.service Тут есть вариант с использованием supervisor, но статья довольно старая, и сам я такой вариант не пробовал, хватило описанного, так что смотрите сами.

Комментариев нет:

Отправить комментарий