Мне нужно написать аналог Windows Service под Linux на MonoDevelop, который будет запускаться/завершаться из-под другой программы (как дочерний процесс). Реально ли это сделать на C#?
В документации .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, но статья довольно старая, и сам я такой вариант не пробовал, хватило описанного, так что смотрите сами.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Вроде бы простой вопрос, только я не нашел соответствующего свойства в спискеВозможно ли это вообще? Прошу не предлагать ToolStripMenuItem
у меня достаточно лёгий вопрос (наверное), как считать значения с списка при заданном значении? Например у меня есть список, очень большой...
Пишу класс рациональных чиселПри неявном преобразовании возникает ошибка (StackOverflowException), причину которой понять не получается